(我在Google上搜索并搜索了几个小时,发现了一些主题,但没有一个适合我)
我正在使用 Wordpress :清漆 + 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个未缓存的请求!
奇怪的事情:
当我尝试执行10个请求(按F5键10x)时,服务器停止服务并在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
),它也遇到了同样的问题。
任何人都可以提供帮助,PLZ?任何帮助将不胜感激!
PS:
答案 0 :(得分:4)
首先减少缓存堆栈。为什么在使用已经从内存中提供服务的w3缓存时使用从内存中提供页面的varnish?
W3cache是CPU密集型的!它不仅可以缓存项目,还可以动态压缩,缩小和合并文件。
你的机器总共有512MB的内存不是很多,而且你的CPU功率还不如现代智能手机。由于xen虚拟化层,与根服务器相比,内存访问速度极慢 - 这就是为什么更少的更多。
确保正确设置了w3cache,以便它实际缓存项目,然后预热缓存,你应该没问题。
看一下Googles nginx pagespeed模块https://github.com/pagespeed/ngx_pagespeed,它可以做同样的事情w3cache,效率更高,因为它发生在网络服务器上,而不是PHP中
Nginx也可以直接从memcached http://www.kingletas.com/2012/08/full-page-cache-with-nginx-and-memcache.html提供(示例文章,可能需要更多调查)
答案 1 :(得分:1)
问题解决了!
对于那些遇到同样问题的人:
检查清漆配置;
检查Wordpress的插件;
1)在我的情况下,TTL没有在Varnish中配置,因此没有任何缓存。 这个配置对我有用:
sub vcl_fetch {
if (!(req.url ~ "wp-(login|admin)")) {
unset beresp.http.set-cookie;
set beresp.ttl = 48h;
}
}
2)页面加载后的高CPU使用率是由一个名为“Scroll Triggered Box”的Wordpress插件引起的。
页面加载后它正在做一些AJAX。我禁用了该插件并停止了高负载。
答案 2 :(得分:0)
这里有两个因素:
您正在使用具有可突发CPU配置文件的微实例。它可以爆发到2个ECU,然后被限制在远低于1(有些估计将其设置在0.1 - 0.2 ECU左右)
以管理员身份登录时,wordpress缓存插件经常绕过或减少缓存。如果您希望一直进行缓存,W3应该允许您切换它。