Прокси-сервер squid (2.7), который у меня запущен на ubuntu 8.10, перестает принимать новые запросы после того, как некоторое время находится в сети, по причинам, которые я не могу обнаружить. Однако делая squid -k reconfigure
немедленно решает проблему.
Теперь я вручную запускаю эту команду, отслеживая журнал, и если я не вижу никакой активности в течение 5 минут, я перезагружаю конфигурацию.
Теперь в поисках решения у меня было несколько идей:
Я обращаюсь к вам за решениями для варианта 2), так как я не понимаю squid достаточно для 1), и я избегаю 3), насколько могу. Любые идеи?
Для теста используйте wget и http_proxy
http_proxy="http://127.0.0.1:3128" wget http://ya.ru -O /dev/null
Для перезапуска:
http_proxy="http://127.0.0.1:3128" wget http://ya.ru -O /dev/null || squid -k reload
Я столкнулся с аналогичным поведением в Squid (это было около 5 лет назад - так и не дошел до сути), но в моем случае оно начало замедляться после 2-3 дней.
Что-то вроде этого запуска cron должно дать необходимое поведение для полной блокировки (при условии, что он перестает записывать в файлы журнала):
#!/bin/bash
LOGFILE=/var/log/cache.log
# you may need to change the above to point to your logfile
LASTRUN=/var/local/squidcheck
# above can be whatever - but dir must exist
if [ ! -f ${LASTRUN} ] ; then
touch ${LASTRUN}
fi
if [ ${LASTRUN} -nt ${LOGFILE} ] ; then
/usr/sbin/squid -k reload
fi
touch ${LASTRUN}
Это должно запускаться от имени пользователя root - так что либо в корневом crontab, либо в системном crontab ...
*/5 * * * * /path/to/shellscript
(обратите внимание, что вы не должны редактировать файл crontab на месте - используйте crontab -l> copy_ctb, чтобы получить копию текущего crontab, отредактируйте его, а затем загрузите новую конфигурацию с помощью crontab copy_ctb)