我应该运行多少个php-cgi进程?

yha*_*ger 5 php fastcgi

我问的是一个运行轻型前端的Web服务器(在我的例子中是nginx),通过fastcgi访问PHP进程.

我试图找到一种方法来有条不紊地计算应该在机器中运行多少PHP cgi进程.

考虑它的一种方法是计算出一个进程的平均内存占用量,并在可用RAM的限制范围内尽可能多地运行.但是,这并没有将CPU使用率带入问题.

由于CPU是我应用程序中的真正瓶颈(使用DB和memcache,但不是瓶颈),我认为php进程的基数应该是可用的CPU数量.

例如 - 在8核机器中,基数为8.假设某些进程等待数据库或网络,我认为没有任何理由共同运行超过20个PHP进程.

这种思维方式有意义吗?你如何计算运行的进程数?

Lan*_*ing 1

选项 1:使用 apache 日志来确定高峰时间的持续时间。

将持续时间添加到日志格式中。(就像是)

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" duration:%T/%D 
Run Code Online (Sandbox Code Playgroud)

然后做一些日志文件解析来分析并发处理请求的数量。

选项 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
Run Code Online (Sandbox Code Playgroud)