Назад | Перейти на главную страницу

Лак периодически выходит из строя по непонятной причине

Последние несколько лет мы использовали 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 на коробке с лаком, чтобы узнать, в каком состоянии находится ваша серверная часть. В зависимости от результата вы можете решить, где искать дальше:

  1. Если бэкэнд считается нездоровым, то проблема заключается между лаком и бэкэндом (или в самом бэкэнде). Проверьте подключение к серверной части, а также любой мониторинг на серверной части.
  2. Если бэкэнд считается исправным, то проблема между монитором и лаком. Проверьте подключение к серверу Varnish, а также отладьте сам мониторинг.
  3. Если процесс varnishadm не может установить соединение, значит проблема в самом лаке. Проверьте, какие процессы varnish запущены, и поищите сообщения об ошибках от varnish в своих журналах.