首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对单个请求使用40% CPU的PHP-FPM

对单个请求使用40% CPU的PHP-FPM
EN

Stack Overflow用户
提问于 2013-07-13 18:47:11
回答 3查看 7.9K关注 0票数 2

(我在这个论坛上搜索了几个小时,找到了一些话题,但没有一个对我有用)

我正在使用Wordpress和:Varnish + Nginx +PHP+ APC +E 110W3总缓存<代码>E 211+<代码>E 112页面速度<代码>E 213。

由于我使用的是清漆,我第一次调用www.mysite.com时,它只需要10%的CPU。第二次调用时,它将被缓存。问题是在URL中传递请求参数

对于一个请求(www.mysite.com?1=1),它显示在top中。

代码语言:javascript
运行
复制
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秒后,它们将被另一个2php-FPM进程替换(如下所示),这些进程活动了3秒。

代码语言:javascript
运行
复制
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使用率仅为一个请求没有缓存!

奇怪的事情:

  • 加载页面后,的CPU使用率更高。
  • 当我清除缓存(W3和Varnish)时,仅需10%的CPU即可加载未缓存的页面。
  • 这种高CPU使用率只是碰巧传递了请求参数或在Wordpress管理中。

当我尝试执行10个请求(按下F5键10x)时,服务器停止服务,并在php日志中显示:

警告:池www服务器到达max_children设置(10),请考虑引发它

我把这个值提高到20,同样的问题。

我正在使用pm=ondemand (pm.max_children=10pm.max_requests=500)。

我当时使用的是pm=dynamic (pm.max_children=10pm.start_servers=1pm.min_spare_servers=1pm.min_spare_servers=2pm.max_requests=500),它也发生了同样的问题。

有人能帮忙吗,好吗?任何帮助都将不胜感激!

PS:

  • 装甲运兵车在上(98%命中,2%未命中)
  • 服务器是亚马逊微(613 is内存)
  • PHP5.3.26(Fcgi)
  • Linux3.4.48-45.46.amzn1.x86_64红帽4.6.3-2 (我认为它是基于CentOS 5)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-16 20:57:07

问题解决了!

对于那些有同样问题的人:

  1. 检查清漆配置;
  2. 检查Wordpress的插件;

1)在我的例子中,TTL没有在Varnish中配置,所以没有缓存任何内容。此配置适用于我:

代码语言:javascript
运行
复制
sub vcl_fetch {
    if (!(req.url ~ "wp-(login|admin)")) {
            unset beresp.http.set-cookie;
            set beresp.ttl = 48h;
    }
}

2)页面加载后CPU使用率高,是由一个名为“滚动触发框”的Wordpress插件引起的。

页面加载后,它正在执行一些AJAX操作。我禁用了那个插件并停止了高负载。

票数 2
EN

Stack Overflow用户

发布于 2013-07-14 09:16:29

首先,减少缓存的堆栈。当您已经使用来自内存的w3缓存时,为什么使用从内存中提供页面的清漆呢?

W3cache是CPU密集型的!它不仅缓存项目,而且压缩,缩小和合并文件的动态。

你有512 is的内存在你的机器上,这不是很多,你的CPU能力也比现代智能手机少。与根服务器相比,由于xen虚拟化层的存在,内存访问非常缓慢--这就是为什么更少就是更多。

确保正确设置了w3cache,使其真正缓存项,然后预热缓存,您应该会没事的。

看看Googles nginx分页模块pagespeed,它可以做w3cache做的同样的事情,只是效率要高得多,因为它发生在webserver中,而不是在PHP中。

Nginx也可以直接从memcached http://www.kingletas.com/2012/08/full-page-cache-with-nginx-and-memcache.html (示例文章,可能需要更多的调查)提供服务。

票数 4
EN

Stack Overflow用户

发布于 2013-07-13 19:21:31

这里有两个因素在起作用:

  1. 您使用的是微实例,它具有可扩展的CPU配置文件。它可以爆裂到2个ECU,然后限制在远小于1(一些估计是在0.1 - 0.2 ECU's)。
  2. 在以管理员身份登录时,wordpress缓存插件通常绕过或减少缓存。如果您一直想要缓存,W3应该允许您切换这一点。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17633190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档