我正在運行一個wordpress站點,每個PHP進程使用大約200mb到250mb的常駐大小內存。使用16GB內存,服務器只能處理大約70個進程。通過將虛擬內存增加到16GB,它可以處理140.之後,負載持續上升。如果10分鐘內有200個連接,則3Ghz四核xeon處理器的服務器負載將達到20個!如何優化php進程的內存使用情況?
我已經嘗試停用所有插件,但這隻會減少每個進程的PHP內存使用量少於10%。 suPHP告訴我哪個用戶正在使用這麼多的內存,但不是wordpress代碼的哪一部分。
有關如何減少內存使用的任何建議?或者是我升級到32GB內存的唯一選擇?從PMAP
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10585 nobody 16 0 2266m 237m 199m S 21.3 1.5 1:09.17 /usr/bin/php
10597 nobody 16 0 2257m 255m 226m S 15.3 1.6 0:17.56 /usr/bin/php
最大輸出-d
000000000e8b8000 27580 rw--- 000000000e8b8000 000:00000 [ anon ]
00002b3772850000 2097152 rw-s- 0000000000000000 000:00009 [ shmid=0x2d1b803a ]
00002b37f2a62000 55108 r---- 0000000000000000 0fd:00000 locale-archive
mapped: 2320852K writeable/private: 30012K shared: 2097152K
IPCS輸出
------ Semaphore Arrays --------
key semid owner perms nsems
0x000000a7 0 root 600 1
0x00000000 162529281 nobody 600 1
0x00000000 162562050 nobody 600 1
0x00000000 162594819 nobody 600 1
0x00000000 162627588 nobody 600 1
------ Message Queues --------
key msqid owner perms used-bytes messages`
您是否已經嘗試安裝APC或某些類似的操作碼緩存解決方案? – raina77ow 2012-04-27 15:40:34
是的。我正在使用eAccelerator和Zend Optimizer。 APC目前不包含在cPanel中。另外兩個可以用easyapache編譯。 – Lisa 2012-04-27 15:48:23
奇怪的是,我正在運行一些託管服務器,大多數PHP實例消耗7到50 MB的RSS內存。我的建議是:1.升級到PHP 5.4(由於減少了內存佔用)。 2.在wordpress前安裝一些反向代理(如清漆)。 – strkol 2012-04-27 16:15:29