Последние несколько лет мы использовали Varnish в качестве кеша и балансировщика нагрузки перед несколькими серверами apache, обслуживающими несколько тысяч веб-сайтов.
Мы также используем monit, чтобы гарантировать, что если лак когда-нибудь умрет, он будет перезапущен. Раздел лака в monitrc выглядит так:
# Check varnish on port 80
check process varnish with pidfile /var/run/varnishd.pid
start program = "/etc/init.d/varnish start"
stop program = "/etc/init.d/varnish stop"
if failed host 127.0.0.1 port 80 protocol http
and request "/monit-check-url"
then restart
Это прекрасно работало как минимум 3 года. Мы получаем случайные сбои при проверке порта 80, но monit перезапускает лак соответственно, и это обычно незаметно для пользователей.
Однако в последние несколько недель мы наблюдаем шквал этих сбоев, обычно в течение нескольких часов, и пользователи замечают сбои подключения. Сегодня было особенно плохо.
В системном журнале нет никаких подсказок (кстати, это ящик debian), как это предлагается в разделе «Сбой Varnish» по адресу: https://www.varnish-cache.org/docs/3.0/tutorial/troubleshooting.html и все, что мы видим, это сбой monit, проверка порта 80, остановка и запуск лакировки.
Кроме того, мы не наблюдаем всплеска пропускной способности или количества обращений к внутренним веб-серверам, которые предполагали бы сбой при более высокой, чем обычно, нагрузке.
Мы использовали Varnish 3.0.3, который я обновил до 3.0.7, но проблема не исчезла. Никаких других изменений в эту коробку, совпадающих с запуском проблем, не вносилось, а конфигурация лака не менялась уже довольно долгое время.
У кого-нибудь был подобный опыт с лаком или есть какие-либо предложения по дальнейшему устранению неполадок? Может, это какая-то атака?
Любая помощь или совет приветствуются!
Ваш подход здесь кажется немного жестким, поскольку существует множество причин, по которым запрос может завершиться неудачно, не все из которых являются проблемами с лаком (например, проблемы с подключением, сбои на бэкэндах и т. Д.). Перезапуск varnish приведет к отключению при повторном запуске, поэтому следует использовать только в крайнем случае.
Прежде чем что-либо перезапускать, я рекомендую varnishadm debug.health
на коробке с лаком, чтобы узнать, в каком состоянии находится ваша серверная часть. В зависимости от результата вы можете решить, где искать дальше: