2009-12-22 78 views
4

我在問一個運行light front的web服務器(在我的例子中是nginx),通過fastcgi訪問PHP進程。我應該運行多少個php-cgi進程?

我想弄清楚一種方法來計算應該在機器上運行多少個PHP cgi進程。

想一想它的一種方法是找出進程的平均內存佔用量,並儘可能在可用RAM的限制範圍內運行。但是,這不會導致CPU使用情況。由於CPU是我的應用程序中真正的瓶頸(使用DB和memcache,但不是瓶頸),我認爲php進程的基數應該是可用CPU的數量。

例如 - 在8核心機器中,基數爲8.假設某些進程等待數據庫或網絡,我沒有看到任何理由運行超過20個PHP進程。

這種思維方式是否有意義?你如何計算運行多少個進程?

+0

AHM,是什麼問題?由於高負荷,您是否獲得較長的響應時間?連接是否被丟棄?用戶是否在抱怨?或者這個應用程序實際上還沒有發佈? (我認爲計算這個的有條不紊的方法是看看你的應用程序的真實度量。)但是,8,8或20.聽起來對我很好! :) – 0scar 2009-12-22 12:57:39

+0

目前沒有問題。該應用程序正在使用apache-modphp,我們正在轉向nginx + fastcgi。這個問題在計劃階段出現了。 – yhager 2009-12-25 10:38:02

回答

1

選項1:使用您的apache日誌來確定在高峯時間的持續時間。

將持續時間添加到您的日誌格式。 (類似)

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" duration:%T/%D 

然後做一些日誌文件解析來分析併發處理請求的數量。

選項2(如果應用程序有專門的Apache服務器):寫一個cron作業登錄apache的進程數量:

# Quick hack to log apache processes 
* * * * * date -R >> /tmp/apache_count && ps -A | grep httpd | grep -v grep | wc -l > /tmp/apache_count 
相關問題