Lighttpd在Apache面前的另一個好處

Lighttpd在Apache面前的另一個好處

我在一個網站上讀到,在 Apache 之前使用 Lighttpd 的另一個好處是子進程數量較少。 Lighttpd 將處理保持活動和客戶端請求,而 Apache 的子進程可以更快地提供動態頁面,因為 Lighttpd 和 Apache 之間的通訊延遲非常低。我正在嘗試找到鏈接,但我遇到了困難。

鑑於我已經有一個專門的Lighttpd 伺服器用於我的靜態內容(img、vid、css、js、html 等)和另一個專用的Apache 伺服器用於我的動態頁面(php),我想實現這項技術(如果它確實如此)有一些性能增益。

1)是否有人出於與上述相同的目的將 Lighttpd 放在 Apache 前面?
2)這真的有性能提升嗎?多少?
3) Lighttpd 處理 Apache 請求的開銷怎麼樣,真的值得嗎?

謝謝!

答案1

  1. 我們有輕型服務靜態內容,並將動態請求轉發到同一伺服器上的 Apache,但監聽另一個端口
  2. 「轉送到 apache 進行動態」並不是為了效能,而是為了從客戶端的角度擁有一台伺服器,為一切提供服務。然而,如果您可以避免與 Apache 的過多連接,這將是一個很好的附帶好處。更多連接 = 更多進程 = 更多記憶體(尤其是 mod_php)。所以,沒有數字,抱歉。
  3. 與 Apache 相比,開銷似乎可以忽略不計

也就是說,您應該考慮使用 Varnish 反向代理程式而不是 Lighty(或在 Lighty 前面)作為您的前端。它非常快速且高效。對於快取動態頁面(或頁面片段,使用 ESI)尤其有趣,它有助於減少後端負載並吸收流量高峰。

並且可能使用 nginx(帶有 PHP-FCGI)作為後端而不是 Apache(儘管這是一個比添加 Varnish 前端更複雜的任務)(nginx 也可以用作前端,但不如專用的反向代理,例如漆) 。免責聲明:我沒有 nginx 經驗;)

答案2

我曾經遇到過同樣的情況,在apache旁邊起訴lighttpd以減少apache的負載。

最好使用輕型 Web 伺服器來提供靜態內容,因為它需要的資源較少。還必須提到的是,PHP 需要 apache 以預分叉模式運行,這會導致 apache 無法有效運作。您可以將負載分配到兩個不同設定的 Web 伺服器,每個伺服器處理其最適合的流量。

一些實施說明:

您有三個選擇:

  1. 修改您的程式碼並在 IP 層上分段流量
  2. 不要修改您的程式碼並在應用程式 (http) 層上分段流量
  3. 讓其中一台 Web 伺服器將請求傳遞到另一台 Web 伺服器以進行實際服務

第一個更快,第二個需要更少的配置,第三個就像騾子一樣。

如果我是你,我不會考慮第三個選項,因為它會帶來配置噩夢,而且,如果你在第一個Web 伺服器上錯誤配置了某些內容,則什麼都不會起作用,並且更難發現問題所在。

過去,我迫切需要一個解決方案,所以我選擇了選項 2,並使用了一個名為的反向代理根據靜態/動態內容分段請求並將負載分配到兩個不同的 Web 伺服器。

雖然它可以工作,但它需要主動監視 http 內容,這會影響效能(運行額外的守護進程)。

使用選項 2,您可以透過為靜態內容 (static.domain.org) 使用額外的 IP 來獲得更好的效能,並讓客戶端引用此 static.domain.org 來取得內容。它仍然需要反向代理,但代理不必檢查任何請求中的 Host: 標頭,因此速度會更快。

這是 pound 的設定片段供您參考:

ListenHTTP 
        Address 195.175.71.17
        Port 80
        Client 30
        RewriteLocation 2

        Service
                HeadRequire "^[Hh]ost:\s*www.nasa.gov$"
                URL "^/static/content"
                BackEnd
                        Address 127.0.0.1
                        Port 81
                        TimeOut 300
                End
        End
        Service
                HeadRequire "^[Hh]ost:\s*www.nasa.gov$"
                BackEnd
                        Address 127.0.0.1
                        Port 80
                        TimeOut 300
                End
        End
ListenHTTP 

相關內容