Haproxy - запрос HTTP тайм-аута по сравнению с тайм-аутом, http-активным по сравнению с сервером тайм-аута

Я пытаюсь перенести голову как 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 минуты для работы серверов приложений.

7
задан 25 November 2014 в 23:07
1 ответ

Просто чтобы прояснить ситуацию бит. Надеюсь, это также ответит на ваши вопросы.

timeout http-request

Время от первого полученного клиентского байта до последнего байта, отправленного клиенту (независимо от сохранения активности). Итак, если ваш бэкэнд слишком медленно или клиент отправляет свой запрос слишком медленно, вся коммуникация может занять больше времени, и запрос будет отброшен (и тайм-аут отправлен клиенту).

timeout http-keep-alive

Время до поддерживать соединение между haproxy и клиентом открытым (после отправки ответа клиента). Это не имеет ничего общего со временем ответа серверной части. Это не имеет никакого отношения к длине одного запроса (т.е. таймаут http-запроса). Это позволяет быстрее реагировать, если пользователь запрашивает несколько ресурсов (например, html, img и js). С keep alive одиночные запросы могут использовать одно и то же TCP-соединение. Таким образом сокращается время загрузки всей веб-страницы.

тайм-аут сервера

Это тайм-аут для ваших внутренних серверов. При достижении haproxy отвечает 504 (таймаут шлюза). Это также не имеет ничего общего с сохранением активности, поскольку касается только соединения между прокси и сервером.

16
ответ дан 2 December 2019 в 23:20

Теги

Похожие вопросы