【发布时间】:2012-04-27 15:35:04
【问题描述】:
我正在运行一个 wordpress 站点,每个 PHP 进程使用大约 200mb 到 250mb 的常驻大小内存。使用 16GB 的内存,服务器只能处理大约 70 个进程。通过将虚拟内存增加到 16GB,它可以处理 140 个。之后负载不断上升。如果在 10 分钟内有 200 个连接,则服务器负载在 3Ghz 四核至强处理器上达到 20!
我已尝试停用所有插件,但这只会将每个进程的 PHP 内存使用量减少不到 10%。 suPHP 告诉我哪个用户使用了这么多内存,但不告诉我 wordpress 代码的哪一部分。
关于如何减少内存使用的任何建议?还是我唯一的选择是升级到 32GB 内存?
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
pmap -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 或一些类似的操作码缓存解决方案?
-
是的。我正在使用 eAccelerator 和 Zend Optimizer。 APC 目前不包含在 cPanel 中。其他两个可以用easyapache编译。
-
这很奇怪,我正在运行一些托管服务器,大多数 PHP 实例消耗 7 到 50 MB 的 RSS 内存。我的建议是: 1. 升级到 php 5.4(因为减少了内存占用)。 2.在wordpress前面安装一些反向代理(如varnish)。
-
@strkol cpanel 尚未提供 5.4。像清漆这样的反向代理可以减少负载并使服务器处理更多流量。但我不会帮助找出导致问题的原因。有些东西导致 PHP 消耗 200 到 250 MB 的 RSS 内存,我只是不知道如何找到它。谢谢你的提示。
-
@Lisa,你能粘贴 pmap -d
的输出吗?
标签: php linux wordpress centos