2009-09-10 64 views
18

我有關於在不同的配置,如mod_php,CGI,FastCGI等運行PHP的基本想法。Apache的mod_php或FastCGI?這對WordPress的好處?

在我的調查結果和測試中,我發現FastCGI稍好。我最喜歡FastCGI對SuEXEC的支持。等等,我不想再次進入標杆業務。如果你瀏覽網頁,你會發現在每秒處理的請求數量方面,證明一種方式的人比另一種方式更快。那麼它的好指標,但我對不同的因素感興趣,這裏是我的問題...

  1. 哪種運行PHP的方法消耗更少的內存?
  2. 另外哪個方法消耗的內存幾乎是恆定的。我看到mod_php服務器的內存使用量在300MB到800MB之間波動,每隔幾秒鐘。
  3. 但是使用FastCGI,服務器的第一個響應來得非常晚。我看到FastCGI每個網頁請求都有一個初始延遲。一旦來自服務器的第一個響應到達,像圖像,CSS,JS等其他項目加載得更快。
  4. 運行兩者的混合可以嗎?我在專用服務器上有5個站點。如果我用mod_php運行幾個並使用FastCGI休​​息,可以嗎?
  5. 我確信我的服務器關閉主要是因爲mod_php的內存使用不正確。我檢查了所有腳本。有什麼方法可以確保服務器上的內存消耗幾乎保持不變?
  6. .htaccess的複雜性是否會顯着影響內存使用情況?如果是的話,是否可能是導致服務器內存不足的唯一原因?
  7. apache MPM prefork/worker設置會影響內存消耗嗎?它們是否同樣影響mod_php和FastCGI模式?
  8. 當我運行「頂部」命令,我看到apache(httpd)消耗大約40MB的內存。有很多httpd運行的實例。除此之外,FastCGI還會分派一些類似大小的進程。 httpd進程的正常內存大小是多少?
  9. 由於我在我們所有的網站上運行Wordpress,這將是在這種情況下的好方法嗎?
  10. FastCGI/SuExec是否可以正常使用APC?我需要重新配置APC才能使用SuEXEC和FastCGI。

請注意,我對倖存於DIGG或交通高峯感興趣較少。我想要一種可以使服務器穩定和可預測的方式。

對不起,如果我很困惑,但我真的陷入混亂。我有512MB的物理內存,400MB的Swap,我的服務器像瘋了一樣耗盡內存。平均內存需求大約爲350MB,它只是內存使用高峯使內存不可用幾秒鐘,如果少數額外的命中收到在這些少數第二個窗口中,Apache崩潰,而MySQL和所有其他傢伙保持良好運行。

請幫我一把。我不會購買更多的內存或硬件。我敢肯定,這個問題是在我的配置。對不起,如果我聽起來傲慢或無知。

+0

由於您對內存使用情況非常擔心,您是否使用過Apache以外的服務器(nginx/lighttpd)? – jimyi 2009-09-11 03:33:17

+0

@Jimyi - 我很關心記憶,但我不確定wordpress及其插件的運行順暢與其他服務。我一直需要Apache的mod重寫。還有誰知道我將來需要哪種Apache mod作爲apache,其中有很多。 – rahul286 2009-09-11 06:47:29

回答

19

運行PHP的哪種方法會消耗更少的內存?

我假設每個PHP處理的請求他們都差不多。但是,如果你已經將mod_php加載到Apache服務映像中,那麼我認爲你的內存佔用將會更高,因爲服務於靜態文件。

另外哪種方法消耗的內存幾乎不變。我看到mod_php服務器的內存使用量在300MB到800MB之間波動,每隔幾秒鐘。

你可以使兩個都很穩定。如果您仔細設置MaxClients,MinSpareServers和MaxSpareServers,幾乎可以確定有多少進程正在運行。如果您還在PHP配置中設置了memory_limit,則可以計算出您需要的內存量。 您也可以對fcgi執行相同的操作,因爲您可以決定運行多少個進程。

但是使用FastCGI,服務器的第一個響應來得非常晚。我看到FastCGI每個網頁請求都有一個初始延遲。一旦來自服務器的第一個響應到達,像圖像,CSS,JS等其他項目加載得更快。

這沒有意義。我不確定爲什麼會發生在你的情況。

可以同時運行兩者嗎?我在專用服務器上有5個站點。如果我用mod_php運行幾個並使用FastCGI休​​息,可以嗎?

我猜,但它都將是維持一個惡夢,可能會更難配置節省內存。相反,我相信。

我確定我的服務器關閉主要是因爲mod_php的內存使用不正確。我檢查了所有腳本。有什麼方法可以確保服務器上的內存消耗幾乎保持不變?

按照上面所述配置內存和進程,並繼續監視。

.htaccess的複雜性是否會顯着影響內存使用情況?如果是的話,是否可能是導致服務器內存不足的唯一原因?

我不這麼認爲。每個目錄.htaccess可以減慢速度,但除非Apache中有一些嚴重的錯誤,否則它不應該導致大容量內存消耗。

apache MPM prefork/worker設置會影響內存消耗嗎?它們是否同樣影響mod_php和FastCGI模式?

它可能,但我建議遠離工作人員,因爲PHP大多不是線程安全的。

當我運行「頂部」命令,我看到apache(httpd)消耗大約40MB的內存。有很多httpd運行的實例。除此之外,FastCGI還會分派一些類似大小的進程。 httpd進程的正常內存大小是多少?

30MB是最小值。上限取決於你的應用程序(我見過的情況下,它是〜1GB)

因爲我在我們的所有網站上運行WordPress,這將是在這種情況下的好方法?

這可能是一個品味問題。我最近從apache轉向了nginx + fastcgi。它需要一些時間來適應,但它確實很好。沒有任何問題與WordPress(甚至沒有超級緩存,這是相當涉及Web服務器方面)。

FastCGI/SuExec是否可以與APC一起正常工作?我需要重新配置APC才能使用SuEXEC和FastCGI。

我沒有使用suExec,但fastcgi與APC配合良好。無需配置任何東西。

+2

@yhager感謝您的詳細回覆。我還將我們的高流量博客網絡移至了nginx + fastcgi + wp-supercache。無論如何要將APC添加到nginx + fastcgi + wp-supercache?它還會進一步提高性能嗎? – rahul286 2009-12-22 11:08:01

+2

只需安裝APC並重新啓動PHP。而且,是的,它會提高性能 – yhager 2009-12-25 10:36:29

3

嘗試切換到mod_php,許多人聲稱它的速度。沒有意識到mod_php服務時通過額外的內存燒傷靜態文件。(我並不太在乎擁有根文件的安全問題)。

沒有CDN設置,fastcgi是您的服務PHP應用程序的選擇。沒有它,從fcgi切換到mod_php減慢了我的頁面生成時間的方式,從3895ms到6264ms(共享主機上的管理頁面)。

+1

對不起,但只有在特殊情況下,mod_php的性能會好於fastcgi/fcgi – rahul286 2011-12-22 12:49:01

+1

在我的情況下,fastcgi幾乎快了1.6倍。從我可以告訴它是因爲我的靜態文件。讓我知道這是不是一個錯誤的假設。 – doublejosh 2012-01-09 20:58:29

+3

由於體系結構的差異,fastcgi速度更快。 Apache + mod_php爲所有文件加載webserver + php-parser。當你保持Apace和fastcgi分離時,你只能爲PHP文件和其他你運行Apache而沒有mod_php的文件加載fastcgi(mod_php本身就是一個非常大的模塊)。除此之外,fastcgi還有許多其他優點 – rahul286 2012-01-13 11:41:00

相關問題