【问题标题】:How many php-cgi processes should I run?我应该运行多少个 php-cgi 进程?
【发布时间】:2009-12-22 01:45:39
【问题描述】:

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

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

一种思考方式是计算一个进程的平均内存占用,并在可用 RAM 的限制内尽可能多地运行。但是,这不会将 CPU 使用率带入问题。

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

例如 - 在 8 核机器中,基数为 8。假设某些进程确实等待数据库或网络,我看不出有任何理由同时运行超过 20 个 PHP 进程。

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

【问题讨论】:

  • 啊,有什么问题吗?您是否因为高负载而获得较长的响应时间?连接是否被丢弃?用户抱怨吗?还是这个应用程序实际上还没有发布? (我认为计算这个有条不紊的方法是查看您的应用程序的实际测量值。)但是,是的,8 或 20。对我来说听起来不错! :)
  • 目前没有问题。该应用程序正在使用 apache-modphp,我们正在转向 nginx+fastcgi。问题出现在规划阶段。

标签: php fastcgi


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多