Apache-2.2

Haproxy - 超時 http-request 與超時 http-keep-alive 與超時伺服器

  • July 22, 2015

我正試圖圍繞 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(網關超時)。這也與保持活動無關,因為它僅與代理和後端之間的連接有關。

引用自:https://serverfault.com/questions/647060