(我在这个论坛上搜索了几个小时,找到了一些主题,但没有一个对我有用)
我正在使用Wordpress与:Varnish + Nginx + PHP-FPM + APC + W3 Total Cache + PageSpeed。
当我使用 Varnish 时,我第一次调用www.mysite.com时它只使用了 10% 的 CPU。第二次调用,会被缓存。问题是在 URL中传递请求参数。
对于仅 1 个请求 ( www.mysite.com?1=1 ),它显示在top
:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7609 nginx 20 0 438m 41m 28m S 11.6 7.0 0:00.35 php-fpm
7606 nginx 20 0 437m 39m 26m S 10.3 6.7 0:00.31 php-fpm
页面完全加载后,上述这些进程仍然处于活动状态。2 秒后,它们被另外 2 个 php-fpm 进程(下)替换,这些进程活动 3 秒。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7665 nginx 20 0 444m 47m 28m S 20.9 7.9 0:00.69 php-fpm
7668 nginx 20 0 444m 46m 28m R 20.9 7.9 0:00.63 php-fpm
40% 的 CPU使用率仅用于 1 个未缓存的请求!
奇怪的东西:
- 页面加载后CPU 使用率较高
- 当我清除缓存(W3 和 Varnish)时,只需10% 的 CPU即可加载未缓存的页面
- 这种高 CPU 使用率只是在传递请求参数或在Wordpress 管理中发生
当我尝试执行 10 次请求(按 F5 键 10 次)时,服务器停止服务并在 php-fpm 日志中出现:
警告:[pool www] 服务器达到 max_children 设置 (10),考虑提高它
我将该值提高到 20,同样的问题。
我正在使用pm=ondemand
(pm.max_children=10
和pm.max_requests=500
)。
最初我使用的是pm=dynamic
( pm.max_children=10
, pm.start_servers=1
, pm.min_spare_servers=1
, pm.min_spare_servers=2
, pm.max_requests=500
) 并且发生了同样的问题。
任何人都可以帮忙,好吗?任何帮助,将不胜感激!
PS:
- APC 开启(98% 命中,2% 未命中)
- 服务器是Amazon Micro (613MB RAM)
- PHP 5.3.26 (fpm-fcgi)
- Linux 版本 3.4.48-45.46.amzn1.x86_64 Red Hat 4.6.3-2(我认为是基于CentOS 5)