PHP-FPM使用太多的内存

我有一个VPS盒子,它为我运行几个网站以及一些脚本,看起来像是内存不足。 它有1GB的总内存。 它看起来像php-fpm耗尽内存。 之前它只是简单地杀死其他进程(如MySQL)来释放内存。

错误是:

php fpm has invoked oom-killer 

我解决了这个问题: php-fpm调用oom-killer

接下来,我试图configuration各种php-fpm设置,但没有运气。 我也增加了我的交换文件大小从1G​​B到2GB(2倍我的物理内存)。 我总共运行了10个小网站,这些网站的stream量并不多,所以我很困惑为什么我的内存不足。 除了为我的箱子购买更多的记忆,还有什么我可以做的吗?

在这一点上,php-fpm似乎占用了整个1GB内存和大部分交换空间,在某些情况下,它阻止了我访问VPS,因为我无法进行身份validation!

运行一个:

 service php-fpm restart 

瞬间释放箱子上的所有记忆(即使用950/990到200/990)。 那么我有什么select? 如果需要,我也可以发布相关的configuration文件。

相关规格:操作系统:Centos 6.7 x86_64内存:1GB交换:2GB php -version:PHP 5.5.35(cli)(内置:Apr 29 2016 09:07:44)php-fpm -version:PHP 5.5.35(fpm- fcgi)(build:Apr 29 2016 09:09:09)

(这应该是一个评论,但它有点长)。

“我解决了使用这种解决scheme” – 不幸的是,大多数意见都是错误的。

php fpm has invoked oom-killer

这意味着:

1)您的系统configuration为过度使用内存。 当你必须pipe理用面向对象语言(比如Java)编写的写得不好,长时间运行的进程和运行大量非活动来宾的虚拟机主机时,内存过量使用是非常有用的。 这两者似乎都不适用于此。 build议将overcommit_memory设置为2将禁用overcommit – 所以WTF不build议将overcommit_ratio设置为80%(默认值通常约为50%)。

2)PHP-FPM要求更多的内存,没有剩下的。 这并不一定意味着PHP-FPM用完了所有的内存。

你的问题是,你正在使用的configuration不适合你正在使用的框。 但是描述如何configurationLinux,PHP,MySQL和一个web服务器在这里有些偏离主题。

重新启动FPM过程似乎解决了这个问题, 表明问题是PHP-FPM,但它是没有吸烟枪。 也许每个PHP进程都有一个开放的数据库连接。

既然你没有发布你的php-fpmconfiguration文件,也没有提供你的web服务器的任何细节,也没有给出任何有关响应时间的指标,这个问题在这里不能回答。

要么花费大量的时间和精力学习如何衡量你的系统行为并调整它,或者购买更多的内存。