所以我对 Linux 和 Web 服务器还很陌生,但大约 8 个月前,我们将网站从共享托管环境移到了 Linux 虚拟服务器,速度更快,并且运行稳定,直到我们在 Wordpress 中重建我们的一个网站并发布。
WP 网站在测试服务器上运行良好,但现在它进入我们的实时服务器时,我们遇到了问题。以下是目前发生的情况以及我到目前为止所做的工作。
网站运行良好,然后我注意到 Apache RAM 和 CPU 飙升至 100%,并且启动了一堆php-cgi
进程。然后我收到一个错误:
mod_fcgid: process ##### graceful kill fail, sending SIGKILL
然后 wordpress 网站开始出现 503 错误,但非 wordpress 网站运行正常。
重启 apache 即可解决问题。之后,我对 fcgid conf 文件做了如下更改:
FcgidIdleTimeout 60
FcgidProcessLifeTime 120
FcgidMaxProcesses 150
FcgidMaxProcessesPerClass 8
FcgidMinProcessesPerClass 0
FcgidConnectTimeout 30
FcgidIOTimeout 2000
FcgidInitialEnv RAILS_ENV production
FcgidIdleScanInterval 30
FcgidMaxRequestLen 1073741824
现在,当 CPU/RAM 出现峰值时,我仍然会得到一堆进程php-cgi
,但过了一会儿,它就平静下来了,只剩下一堆僵尸php-cgi
进程,但服务器仍在运行,所以我对此感到高兴。但我仍然必须偶尔重新启动才能清除这些进程。
我们在测试服务器上测试了我们的网站几个月,没有任何问题,但现在我们网站上同时有 10-20 人。但我不知道是什么导致了这种失控的激增,甚至不知道从哪里开始。也许是代码问题,也许是服务器配置问题。
服务器规格:
- 2GB 内存
- CentOS 6
- 网站通常有 500-1000MB 的免费 RAM
如果您需要其他详细信息,请告诉我,我可以查找。
更新:所以我认为这可能与一些糟糕的 php 代码有关,但需要时间来追踪。似乎应该有一些更强大的服务器配置,我可以设置以防止它崩溃。今天我让它崩溃了 2-3 次,其中一次导致 Apache 服务完全崩溃。