PHP 进程不断占用我的服务器,占用 CPU 并导致服务器锁定 :(

PHP 进程不断占用我的服务器,占用 CPU 并导致服务器锁定 :(

我有一个 Debian Squeeze Lighttpd 服务器,上面有 PHP 和 MySQL,并且还安装了 XCache 和 Varnish。

我对此还很陌生,但已尽我所能解决这个问题,但没有成功。

无论我使用 Lighttpd 还是 Nginx 还是 XCache 还是 APC,问题仍然存在。

基本上,服务器可以完美地处理 PHP,RAM 看起来很好等等。然后突然它似乎停止了,PHP-CGI(或 FPM)进程不断堆积,耗尽了我所有的四核 CPU 能力,导致整个服务器几乎完全没有响应。

我的服务器上有 4 个网站,其中 3 个流量和需求都很低,而其中一个则非常密集和繁忙。所以几乎肯定是该网站导致了这个问题。但是,我们之前使用 cPanel 设置让该网站在此 (VPS) 服务器上运行(由于成本和 Debian 的偏好等原因,我现在想避免使用 cPanel)。

即使我从密集站点中删除所有 AJAX 并降低流量,它仍然会这样做。

PHP、MySQL 或 lighttpd 日志中也没有报告明显的错误(我让它们全部运行并定期检查它们)。

这是我的 lighttpd.conf 的 PHP 部分:

http://pastebin.com/JwbFJ4YQ

(建议将最大请求数设置为 500这里,不能 100% 确定它是否正确,但问题当然也发生在 nginx 中!)

这是我的 php.ini:

http://pastebin.com/XHH0YMTd

和我的 MySQL my.cnf:

http://pastebin.com/YPFjdfmf

有什么想法吗?XCache 只分配了 64mb,但这是他们建议的起始值,而且它似乎从未在其管理 CP 中使用过所有内存(据我所知)。我认为 Varnish 和 XCache 都运行良好,并且网站响应非常快,直到发生此锁定事件(可以预见的是,它总是会发生)。

答案1

已经修复...我认为!

解决方案是在 PHP 和 MySQL 中尽可能地实现超时。

我不会详细描述,但只要进行一些谷歌搜索,你就会找到它们。

它们包括:

mysql.connect_timeout(在 php.ini 中)

interactive_timeout(我设置为 10)

等待超时(我设置为20)

连接超时(我设置为20)

在 MySQL 的 my.cnf 文件中(我认为这就是 my.cnf 的全部内容)

这似乎可以控制一切并使服务器保持正常运行!

非常感谢你的帮助 :)

海浪

相关内容