Haproxy - 超時 http-request 與超時 http-keep-alive 與超時伺服器
我正試圖圍繞 haproxy 選項
timeout http-request <timeout> timeout http-keep-alive <timeout> timeout server <timeout>
互相交流。我在 haproxy 負載均衡器後面的兩台應用伺服器上執行 Apache 網站。現在我沒有啟用 keep-alive,但我一直在嘗試啟用它,因為我認為它有助於優化網站。我的目標是為瀏覽器和 haproxy 之間的連接啟用 keep-alive,但禁用 haproxy 和 apache 之間的 keep-alive。我用
option http-server-close
現在我正在研究設置保持活動超時。我一直在研究haproxy 手冊的超時 http-request 選項、超時 http-keep-alive 選項和超時伺服器選項。如果我正確理解手冊,超時 http-keep-alive 是保持新請求之間連接打開的時間,超時 http-request 是在關閉連接之前等待響應標頭的時間。但我似乎無法弄清楚超時伺服器的規定。我想說超時伺服器是等待完整響應的時間,但是有人可以確認嗎?如果我是對的,超時伺服器是等待完整響應的時間,那麼我是否正確,它不應該對保持活動超時設置有任何影響?
這是我正在修改的 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 分鐘才能在應用伺服器上執行的報告。
只是為了澄清一點。我希望這也能回答你的問題。
超時http請求
是從收到第一個客戶端字節到發送到客戶端的最後一個字節的時間(無論是否保持活動狀態)。因此,如果您的後端太慢或客戶端發送請求太慢,則整個通信可能需要比這更長的時間,並且請求被丟棄(並且向客戶端發送超時)。
超時http-keep-alive
在 haproxy 和客戶端之間保持連接打開的時間(在發送客戶端響應之後)。這與後端響應時間無關。這與單個請求的長度(即http-request timeout)無關。如果使用者請求多個資源(即 html、img 和 js),這允許更快的響應。通過保持活動,單個請求可以使用相同的 tcp 連接。這樣可以減少整個網頁的載入時間。
超時伺服器
這是您的後端伺服器的超時。到達時,haproxy 回复 504(網關超時)。這也與保持活動無關,因為它僅與代理和後端之間的連接有關。