2013-06-26 150 views
1

我有一个小而精致的VPS:1.5GHz,1GB专用内存,1GB可破解内存,40GB硬盘。用于WordPress的PHP-FPM吞噬内存

该堆栈是CentOS nginX mySQL(Percona)PHP-FPM。

我有3个低流量网站(每个网站每天10-40个访问者),每个网站运行一个独立的WordPress实例。

此外,我还有3个WordPress的实例。这3个站点尚未启动,因此有效的流量为零。

在过去一个月左右,CPU使用率从未上涨到5%以上。

然而,PHP-FPM过程占用了大量的内存。目前,我正在使用3GB(不知道如何...因为专用+突发可用于我应该只有2GB)。

3个活动网站的PHP-FPM过程分别使用732MB,438MB和89MB。

针对4个零流量,零内容网站的PHP-FPM流程分别使用679MB,621MB和596MB。

此外:

  • PHP-FPM(阿帕奇)127MB
  • mysqld的122MB
  • nginx的44MB
  • 命名21MB
  • miniserv.pl 20MB
  • LFD 16MB
  • PHP -fpm(ispconfig)13MB
  • PHP-FPM(ispapps)13MB
  • PHP-FPM(根)7MB
  • NewRelic的守护7MB
  • nginx的(根)4MB
  • rsyslogd(根)3MB
  • nrsysmond(NewRelic的)3MB
  • mysqld_safe的(根)2MB

示例PHP-FPM配置:​​

对于大多数这些网站,的conf文件有像

pm = dynamic 
pm.max_children = 10 
pm.start_servers = 2 
pm.min_spare_servers = 1 
pm.max_spare_servers = 5 
pm.max_requests = 0 
+0

运行'ps aux | grep php-fpm'。如果你看到一些php-fpm子进程运行了很长时间(几个小时甚至几天),这表明你需要更新你的php-fpm配置来在一些请求('pm。 max_requests')。一个PHP过程应该在几分钟内回收,而不是几个小时。 –

+0

另外你不应该分配256M内存给apc。总共有1G的内存太多了。 –

回答

0

PHP-FPM是罪魁祸首。

我开始寻找更新,发现我的版本(5.3.3)是PHP-FPM的最后一个独立版本。随后它被合并到主要的PHP项目中。

PHP已经在5.5.0上,所以我决定升级到这个版本。但是,ISPConfig3与5.5.0不兼容,所以我最终升级到了5.4.16。

我也设置pm = ondemand(尽管pm = dynamic可以同样工作)。

现在,我的内存使用量是450MB,从一些3.5GB下来!

-2

乌姆值可能坏的配置,PHP-FPM从不杀子(所以不要RESTAR,永远干净RAM),APC缓存,PHP-FPM使用128 MB的RAM的每个进程是他们不重启可以使用大量的RAM。

也许你可以发布一些日志和配置。

在wordpress或某个插件上使用w3tc而不是在APC上缓存和保存信息?