為許多輕量級並發 Keep-Alive http 連接配置 lighttpd

為許多輕量級並發 Keep-Alive http 連接配置 lighttpd

我使用 lighttpd 作為我的基於自訂 HTTP 的應用程式伺服器的前端代理。我需要為大量(假設大約 5000 個)並發 http 連接配置 lighttpd,這些連接具有較大的超時和 KeepAlive 設定。每個連線大部分時間都處於閒置狀態。想像一個基於 HTTP 的聊天伺服器。

我的 HTTP 伺服器正在使用類似 http-push Comet 的互動(請參閱 Wikipediahttp://en.wikipedia.org/wiki/Comet_(程式設計))。具體來說,AJAX 用戶端發送 GET 請求,伺服器不會立即回覆。相反,伺服器會等待 HTTP 連線打開,直到需要向客戶端發送新狀態訊息,然後發送對 GET 請求的 HTTP 回應。客戶端處理回复,並繼續發送另一個 GET 請求,伺服器將再次不會立即回复。

然而,就問題而言,請求的確切性質是不必要的。本質上需要的是一個lighttpd 配置,它允許同時開啟大量低頻寬並發HTTP 代理連線。

如何設定 lighttpd 1.4.19。我在 Ubuntu 8.04 下運行。 lighttpd 正在將請求代理到我的應用程式伺服器以及我的 django 後端。

  • 我只是簡單地設定 server.max-keep-alive-requests = 5000並結束這一天嗎?

  • 應該server.max-fds = 5000還是更大的數字?

  • 有哪些內存注意事項?

  • 也許我應該強化我的應用程式伺服器,以便它可以在沒有lighttpd代理的情況下使用(我對我的程式設計沒有那麼有信心,讓它直接面向世界而無需可靠的代理)?

據稱,lighttpd 可以同時處理 10,000 個連線。我如何配置它來完成該數量的一半,其中大部分大部分都是閒置的?

答案1

請記住,每個代理連線(至少)使用兩個 FD,一個連接到客戶端,一個連接到被代理的伺服器。也要考慮約 5-50 個 FD 的開銷。

至於您問題的其餘部分,我想說您需要在您的環境中測試您的應用程序,以找到最適合您的設定。

答案2

您需要 Lighttpd-1.5.x(幾乎來自 SVN)才能正確執行此操作,因為 1.4.x 中的代理程式不會對 1.4.x 中的 Lighttpd <--> 後端通訊位元進行 I/O 重複使用。

據我所知,我發現 Lighttpd-1.5.x 是唯一能夠執行此操作的反向代理。

您想要使用mod_proxy_coreand mod_proxy_backend_http,並使用proxy-core.max-keep-alive-requestsand proxy-core.max-pool-size(注意它們如何以“proxy-core.”而不是“server.”為前綴):http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModProxyCore

我已經用 20 000 個並發保持活動連接(Lighttpd <-> 後端)對此進行了測試,效果良好。

相關內容