(我在这个论坛上搜索了几个小时,找到了一些话题,但没有一个对我有用)
我正在使用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中。
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秒。
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-fpm40%的CPU使用率仅为一个请求没有缓存!
奇怪的事情:
当我尝试执行10个请求(按下F5键10x)时,服务器停止服务,并在php日志中显示:
警告:池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:
发布于 2013-07-16 20:57:07
问题解决了!
对于那些有同样问题的人:
1)在我的例子中,TTL没有在Varnish中配置,所以没有缓存任何内容。此配置适用于我:
sub vcl_fetch {
if (!(req.url ~ "wp-(login|admin)")) {
unset beresp.http.set-cookie;
set beresp.ttl = 48h;
}
}2)页面加载后CPU使用率高,是由一个名为“滚动触发框”的Wordpress插件引起的。
页面加载后,它正在执行一些AJAX操作。我禁用了那个插件并停止了高负载。
发布于 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 (示例文章,可能需要更多的调查)提供服务。
发布于 2013-07-13 19:21:31
这里有两个因素在起作用:
https://stackoverflow.com/questions/17633190
复制相似问题