Я пытаюсь перенести голову как haproxy опции
timeout http-request <timeout>
timeout http-keep-alive <timeout>
timeout server <timeout>
взаимодействуйте друг с другом. Я выполняю веб-сайт Apache на двух серверах приложений, живущих позади haproxy подсистемы балансировки нагрузки. Прямо сейчас я не имею активными, включил, но я экспериментировал с включением его, потому что я думаю, что это помогло бы оптимизировать сайт. Моя цель состояла в том, чтобы включить активный для соединения между браузером и haproxy, но отключить активный между haproxy и апачем. Я выполнил это с
option http-server-close
Теперь я изучаю установку активных тайм-аутов. Я изучал haproxy руководство для опции запроса HTTP тайм-аута, тайм-аут http-активная опция и параметр сервера тайм-аута. Если я понимаю руководство правильно, http-активный тайм-аут является временем для хранения соединения открытым между новыми запросами, и запрос HTTP тайм-аута является временем для ожидания заголовков ответа прежде, чем закрыть соединение. Но то, что я, может казаться, не выясняю, - то, что диктует сервер тайм-аута. Я хочу сказать, что сервер тайм-аута является временем для ожидания полного ответа, но кто-либо может подтвердить это? Если я прав, что сервер тайм-аута является временем для ожидания полного ответа, то я корректен, что он не должен иметь никакого влияния на активные настройки тайм-аута?
Вот моя конфигурация haproxy, что я работаю над изменением:
global
maxconn 4096
pidfile /var/run/haproxy.pid
daemon
defaults
mode http
retries 3
option redispatch
maxconn 5000
timeout connect 5000
timeout client 300000
timeout server 300000
listen HTTP *:80
mode http
cookie HTTP insert nocache
balance roundrobin
#option httpclose # I just commented this out in favor of http-server-close
option http-server-close
timeout http-keep-alive 500 # from the haproxy manual suggestion of "tens to hundreds of ms"
timeout http-request 5000
option forwardfor
stats enable
stats uri /my-lb-status
stats auth myLbStatus:123456
reqadd X-Forwarded-Proto:\ http
option httpchk GET /robots.txt HTTP/1.0
server SERVER_A 1.2.3.4:80 cookie app_01 check
server maintenance 127.0.0.1:8080 backup
В конечном счете моя цель состоит в том, чтобы смочь включить активный между браузером и haproxy с требованием способности выполнить отчет, который может занять 2-3 минуты для работы серверов приложений.
Просто чтобы прояснить ситуацию бит. Надеюсь, это также ответит на ваши вопросы.
timeout http-request
Время от первого полученного клиентского байта до последнего байта, отправленного клиенту (независимо от сохранения активности). Итак, если ваш бэкэнд слишком медленно или клиент отправляет свой запрос слишком медленно, вся коммуникация может занять больше времени, и запрос будет отброшен (и тайм-аут отправлен клиенту).
timeout http-keep-alive
Время до поддерживать соединение между haproxy и клиентом открытым (после отправки ответа клиента). Это не имеет ничего общего со временем ответа серверной части. Это не имеет никакого отношения к длине одного запроса (т.е. таймаут http-запроса). Это позволяет быстрее реагировать, если пользователь запрашивает несколько ресурсов (например, html, img и js). С keep alive одиночные запросы могут использовать одно и то же TCP-соединение. Таким образом сокращается время загрузки всей веб-страницы.
тайм-аут сервера
Это тайм-аут для ваших внутренних серверов. При достижении haproxy отвечает 504 (таймаут шлюза). Это также не имеет ничего общего с сохранением активности, поскольку касается только соединения между прокси и сервером.