IIS 7上的WordPress php-cgi占用CPU

时间:2012-02-14 21:06:57

标签: php wordpress iis caching cgi

根据IIS.net's guide.使用WP-SuperCache在IIS 7(Windows Server 2008)上运行WordPress

运行良好但最近我们更改了某些文件夹和管理员密码的权限,并且由于PHP-cgi.exe进程,我们的CPU使用率大幅上升。

cpu usage

php-cgi.exe processes

这让我相信它不是缓存,但页面本身在底部有“缓存的WP-SuperCache”注释,缓存似乎正常工作。

这里还有什么问题?

2 个答案:

答案 0 :(得分:9)

我想我可能已经找到了解决方案或至少解决了这个问题,至少看起来它对我来说是可靠的。

尝试在IIS服务器下设置“最大实例”设置 - > FastCGI设置,为1。

在我看来,通常在更新帖子时,只有某些请求导致php-cgi.exe进程流氓并占用cpu。在阅读有关此问题的其他帖子时,其中一个提到了Max Instances设置,并将其设置为默认值为0或自动。我想知道如果事情不是这样的话,这可能会产生不好的效果。我猜测(但这不是我的专业领域)如果某个请求导致进程锁定,那么FastCGI只创建另一个,同时保留第一个。不知怎的,似乎只有一个实例允许PHP从锁定中移开并且cpu保持在控制之下。

对于具有高级别请求的服务器,将FastCGI设置为仅一个实例可能并不理想,但它肯定胜过我之前遇到的延迟。与WP-SuperCache和WinCache结合使用,现在看起来很好。

答案 1 :(得分:1)

查看该任务mgr看起来像是在每个请求上都缺少缓存。加上那篇文章可以追溯到2008年,因此很难说出所写的指示是否仍然有效。 WP-SuperCache的东西可能已经改变了。

我建议使用W3 Total Cache。我已经在Windows Server 2008和IIS 7上对它进行了大量测试,效果很好。它还兼容并利用PHP的WinCache扩展。如果你感兴趣,缩小,CDN支持等,还有一些其他很棒的功能。这是一个非常好的WordPress性能插件。您可以在此处获取插件http://wordpress.org/extend/plugins/w3-total-cache/

要检查的其他一些事情......

应用程序池的大小是多少? (进程数量?) 确保您使用的是PHP 5.3。 确保您使用的是WinCache。 确保将MaxInstanceRequests设置为小于PHP_FCGI_MAX_REQUESTS的值。绝对不允许PHP处理重新打包应用程序池。默认值为10K请求。如果您在负载测试期间看到这些结果,那么这可能是原因。增加MaxInstanceRequests并保持比PHP_FCGI_MAX_REQUESTS少一个。

希望有所帮助。