2013-06-26 104 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上緩存和保存信息?