Web-Server
從 Web 伺服器端保持活動的優點和缺點
HTTP 協議中的 Keep-Alive 連接功能旨在減少對 Web 伺服器的 TCP 連接命中。它應該能夠提高 Web 伺服器的性能。但是,我發現一些 Web 伺服器故意從伺服器端禁用 KeepAlive 功能。
據我了解,一些反向代理,即HAProxy,會禁用HTTP keep-alive,以減少在某些情況下比CPU 使用更關鍵的記憶體使用。
Web 伺服器禁用 Keep-Alive 還有其他原因嗎?
Keep alive 旨在減少 tcp-setup 的數量,這些設置很健談並且受延遲的影響很大。它的主要目標是提高客戶端性能 - 對於現代伺服器作業系統而言,建立 tcp 連接的成本很低。
一些代理/負載均衡器傾向於禁用網路伺服器的保持活動,因為它們假設實際的伺服器並且位於 LAN 上,延遲可以忽略不計,因此 tcp 設置損失可以忽略不計。它還降低了平衡軟體的複雜性,因為傳入和傳出(從 LB 的角度來看)連接之間不一定存在一對一的關係。
伺服器禁用keep-alive的原因很少,所以我懷疑這可能是管理員的錯。一個例外是 a-child-per-connection 伺服器 (apache),其中盡快釋放該子/執行緒會提供優勢,即使總體瀏覽器體驗(和頻寬使用)變得更差。
請注意,afaik keep-alive 是一個可選功能,不需要任何服務來實現它。