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

Ошибка Varnish 503 ровно через 60 секунд… как изменить это значение тайм-аута?

Я использую Varnish поверх Apache на сайте Drupal. У меня есть PHP-скрипт, который выполняется на определенном пути моего сайта и занимает очень много времени ... например, 60–120 секунд. При попытке доступа к этой странице Varnish всегда дает мне 503 тайм-аута для медитации гуру ровно через 60 секунд.

Я попытался установить Varnish connect_timeout на действительно высокое значение ... Я попытался установить все таймауты в Apache php.ini на действительно высокие значения ... но не повезло: Varnish просто продолжает выдавать мне ошибку 503 ровно через 60 секунд .

Итак, вот мой вопрос: откуда это значение тайм-аута 60 секунд? Я тут за волосы выдергиваю ...

(К вашему сведению: если я уберу Varnish из изображения, Apache обслужит страницу, как ожидалось, через 60–120 секунд, что заставляет меня думать, что тайм-аут должен быть где-то на стороне Varnish ...).

Я столкнулся с ошибкой 503, когда мой сервер не сильно загружен. Я попытался избежать этой проблемы, увеличив тайм-аут в vcl conf

first_byte_timeout = 300 с; (по умолчанию 60 секунд) <- наверное, это ответит на ваш вопрос (или нет) :)

Пожалуйста, проверьте это

http://vincentfretin.ecreall.com/articles/varnish-guru-meditation-on-timeout

надеюсь, что это поможет

Error 503 Backend fetch failed
Backend fetch failed

Чтобы решить эту проблему, увеличьте значение по умолчанию параметра http_resp_hdr_len в файле конфигурации Varnish. Параметр http_resp_hdr_len указывает максимальную длину заголовка в пределах общего размера ответа по умолчанию, равного 32768 байтам.

Если значение http_resp_hdr_len превышает 32768 байт, необходимо также увеличить размер ответа по умолчанию с помощью параметра http_resp_size. Как пользователь с привилегиями root откройте файл конфигурации Vanish в текстовом редакторе:

CentOS 6: /etc/sysconfig/varnish
CentOS 7: /etc/varnish/varnish.params
Ubuntu: /etc/default/varnish

Найдите параметр http_resp_hdr_len. Если параметр не существует, добавьте его после thread_pool_max. Задайте для http_resp_hdr_len значение, равное количеству продуктов в вашей наибольшей категории, умноженному на 21. (Длина каждого тега продукта составляет около 21 символа).

Например, установка значения 65536 байт должна работать, если ваша самая большая категория содержит 3000 товаров:

-p http_resp_hdr_len=65536 \

Установите для http_resp_size значение, соответствующее увеличенной длине заголовка ответа.

Например, использование суммы увеличенной длины заголовка и размера ответа по умолчанию является хорошей отправной точкой (например, 65536 + 32768 = 98304):

-p http_resp_size=98304 \

Ниже следует фрагмент:

# DAEMON_OPTS is used by the init script.
DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \
     -f ${VARNISH_VCL_CONF} \
     -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
     -p thread_pool_min=${VARNISH_MIN_THREADS} \
     -p thread_pool_max=${VARNISH_MAX_THREADS} \
     -p http_resp_hdr_len=65536 \
     -p http_resp_size=98304 \
     -S ${VARNISH_SECRET_FILE} \
     -s ${VARNISH_STORAGE}"