Porównaj ceny domen i usług IT, sprzedawców z całego świata

Haproxy - przekroczenie limitu czasu żądania http vs przekroczenie limitu czasu http-keep-alive vs limit czasu serwera


Próbuję zrozumieć, jak parametry haproxy
timeout http-request <timeout>
timeout http-keep-alive <timeout>
timeout server <timeout>

współdziałają ze sobą. Uruchamiam witrynę Apache na dwóch serwerach aplikacji za haproxy load balancer. W tej chwili nie mam włączonej funkcji utrzymywania aktywności, ale eksperymentuję z jej włączeniem, ponieważ myślę, że pomoże to zoptymalizować witrynę. Moim celem było włączenie funkcji utrzymywania aktywności dla połączenia między przeglądarką a haproxy, ale wyłączenie funkcji utrzymywania aktywności między haproxy i apache. Osiągnąłem to z
option http-server-close

Obecnie zajmuję się konfiguracją limitów czasu utrzymywania aktywności. uczyłem się

instrukcja haproxy
http://cbonte.github.io/haprox ... .html
dla parametru limitu czasu żądania http, parametru http-keep-alive i parametru limitu czasu serwera. Jeśli dobrze rozumiem instrukcję, limit czasu http-keep-alive to czas, w którym połączenie pozostaje otwarte między nowymi żądaniami, a limit czasu żądania http to czas oczekiwania na nagłówki odpowiedzi przed zamknięciem połączenia. Ale nie mogę zrozumieć, co dyktuje serwer limitu czasu. Chodzi mi o to, że limit czasu serwera to czas oczekiwania na pełną odpowiedź, ale czy ktoś może to potwierdzić? Jeśli mam rację, że limit czasu serwera to czas oczekiwania na pełną odpowiedź, to czy to prawda, że ​​nie powinien on mieć nic wspólnego z ustawieniami limitu czasu utrzymywania aktywności?
Oto moja konfiguracja haproxy, nad którą pracuję:
global
maxconn 4096
pidfile/var/run/haproxy.pid
daemondefaults
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

Ostatecznie moim celem jest umożliwienie utrzymywania aktywności między przeglądarką a haproxy z wymogiem uruchomienia raportu, co może zająć 2-3 minuty na serwerach aplikacji.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Żeby trochę wyjaśnić. Mam nadzieję, że to również odpowiada na Twoje pytania.

Limit czasu żądania http

Czas od pierwszego odebranego bajtu klienta do ostatniego bajtu wysłanego do klienta (niezależnie od tego, czy pozostaje aktywny). Dlatego jeśli Twój backend jest zbyt wolny lub klient jest zbyt wolny, aby wysłać swoje żądanie, cała komunikacja może zająć więcej czasu, a żądanie zostanie odrzucone (a do klienta zostanie wysłany limit czasu).

przekroczenie limitu czasu http-keep-alive

Czas na utrzymanie otwartego połączenia między haproxy a klientem (po wysłaniu odpowiedzi klienta). Nie ma to nic wspólnego z czasem odpowiedzi po stronie serwera. Nie ma to nic wspólnego z długością jednego żądania (tj. Przekroczeniem limitu czasu żądania http). To przyspiesza odpowiedź, jeśli użytkownik zażąda wielu zasobów (takich jak html, img i js). Dopóki pozostają aktywne, oddzielne żądania mogą korzystać z tego samego połączenia TCP. Skraca to czas potrzebny do załadowania całej strony internetowej.

serwer limitu czasu

To jest limit czasu dla serwerów wewnętrznych. Po osiągnięciu haproxy odpowiada 504 (przekroczenie limitu czasu bramy). Nie ma to również nic wspólnego z utrzymywaniem jej aktywności, ponieważ dotyczy tylko połączenia między serwerem proxy a zapleczem.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się