【发布时间】:2013-07-12 01:47:57
【问题描述】:
(我在这个论坛上搜索了几个小时,找到了一些主题,但没有一个对我有用)
我正在使用 Wordpress 与:Varnish + Nginx + PHP-FPM + APC + W3 总缓存 + 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)
【问题讨论】:
标签: wordpress nginx amazon-ec2 php