我问的是运行轻型前端的Web服务器(在我的情况下是nginx),通过fastcgi访问PHP进程。
我试图找出一种方法来有条不紊地计算应该在机器中运行多少PHP cgi进程。
考虑它的一种方法是计算进程的平均内存占用量,并在可用RAM的限制内尽可能多地运行。但是,这并没有将CPU使用率带入问题。
由于CPU是我应用程序的真正瓶颈(使用了DB和memcache,但不是瓶颈),我认为php进程的基数应该是可用CPU的数量。
例如 - 在8核机器中,基数为8.假设某些进程等待数据库或网络,我认为没有任何理由共同运行超过20个PHP进程。
这种思维方式有意义吗?如何计算要运行的进程数?
答案 0 :(得分: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