使用lighttpd,php5,xcache和fastcgi运行debian系统。 2GB内存,2个内核,在5分钟平均峰值时间内CPU负载小于10%,小于1GB的内存。
该系统运行一个自定义的构buildWeb应用程序,刮飞行search网站,没有caching(的结果),所以它是实时制作的,它的代码使用libcurl,可能会执行几秒钟的每一个search。 还有一个OpenX广告系统。
最近这个网站似乎间歇性的超时,我创build了一个简单的testing脚本,只是打印一个单词,以确保它与MySQL数据库无关。
据我所知,当我们运行opcode cacher时,我们不应该运行许多fastcgi“max-procs”(因为每个进程都会使用它自己的caching,我假设),而是增加孩子。
孩子们从20(最大值为2)增加到了32,没有什么不同。 据我所知,同时运行的脚本数量是max-procs * children。 查看status.statistics-url的输出,而脚本需要很长时间才能运行,似乎并不表示所有的孩子都很忙。
正确的做法是不断增加fastcgi儿童的数量,还有更多的工作要做? 是否有可能看到哪些脚本在运行时间,运行多久等等等等等等?
fastcgi.active-requests:39
fastcgi.backend.0.0.connected:2259
fastcgi.backend.0.0.died:0
fastcgi.backend.0.0.disabled:0
fastcgi.backend.0.0.load:19
fastcgi.backend.0.0.overloaded:0
fastcgi.backend.0.1.connected:4646
fastcgi.backend.0.1.died:0
fastcgi.backend.0.1.disabled:0
fastcgi.backend.0.1.load:20
fastcgi.backend.0.1.overloaded:0
fastcgi.backend.0.load:39
fastcgi.requests:6905
10 fastcgi.conf:
“max-procs”=> 2,
“空闲超时”=> 20,
“bin-environment”=>(
“PHP_FCGI_CHILDREN”=>“32”,
“PHP_FCGI_MAX_REQUESTS”=>“500”
lighttpd错误日志,这些负载:
2011-05-30 09:45:48:(server.c.1258)注意:/index.php?//search/poll请求写入15180字节后超时。 我们等了360秒。 如果这个问题增加server.max-write-idle
2011-05-30 09:49:08:(server.c.1258)注意:在写入12420字节后,请求/index.php?//定时超时。 我们等了360秒。 如果这个问题增加server.max-write-idle
将您的PHP二进制文件改为FPM而不是旧的fastcgi。
FPM(FastCGIstream程pipe理器)是一种替代的PHP FastCGI实现,其中一些附加function(主要是)可用于重载站点。
工作更稳定,你不应该有超时的问题。
就像vartec说的那样,PHP-FPM在这里可能是个好主意。 请注意,PHP 5.2版本不支持dynamic进程产生(尽pipe它是一个可configuration的选项),所以你必须确保你有足够的工人来处理所有的stream量高峰。
如果你切换到PHP-FPM,一个好处就是在你的所有PHP进程之间共享操作码caching(用lighttpd方法可能实现的东西,但更烦人一点)。
你看到什么样的请求/秒? 我通常尝试运行一个PHP进程,每服务器看到每秒的请求。 这可能不是一个相对较低的内存系统的最好的主意,但我还没有遇到任何问题。
你使用unix套接字,或TCPIP连接lighttpd和PHP? 如果您使用TCPIP,您应该切换到unix套接字。 在使用TCPIP时,我已经看到各种间歇性的,很难诊断的问题。 您可能正在使用TCPIP达到防火墙限制或连接限制。
你在用穆宁这样的东西来监控吗? 它可能会很方便你有stream量负载graphics,服务器负载,MySQL负载等。虽然这不会解决你的问题,只是有他们,他们将非常方便你。
其中一个供应商在回应查询时遇到了问题,因此网站上的所有search排队等待由fastcgi执行的许multithreading。 看起来fastcgi没有真正的解决方法,而是在代码中实现适当的超时,并可能检测到供应商是不是强制性的 – 并停止发送更多的查询。
另外,我切换到php-fpm,现在正在不断地监视“/ status”,以便及早发现这些问题。