首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化php进程的内存使用?

如何优化php进程的内存使用?
EN

Stack Overflow用户
提问于 2012-04-27 23:35:05
回答 2查看 9.5K关注 0票数 10

我正在运行一个wordpress站点,每个PHP进程使用大约200mb到250mb的常驻内存。使用16 70的内存,服务器只能处理大约70个进程。通过将虚拟内存增加到16 By,它可以处理140。在那之后,负载一直在上升。如果在10分钟内有200个连接,那么在3 3Ghz四核xeon处理器上,服务器负载将达到20!

我已经尝试停用了所有的插件,但这只会减少每个进程的PHP内存使用量不到10%。suPHP告诉我哪个用户使用了这么多内存,但没有告诉我wordpress代码的哪一部分。

对如何减少内存使用有什么建议吗?或者我唯一的选择是升级到32 Or的内存?

代码语言:javascript
复制
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的最大输出

代码语言:javascript
复制
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输出

代码语言:javascript
复制
------ 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`
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-28 05:21:09

我将总结Lisa为发现问题所做的工作:

  • 使用pmap -d <pid>检查单个PHP进程的内存布局。输出显示该进程使用了大量的共享内存:

00002b3772850000 2097152 rw-s- 0000000000000000 000:00009 shmid=0x2d1b803a

  • 使用ipcs -m检查共享内存区域。它显示有许多共享内存区域是由用户nobody ( web服务器)创建的,这里只列出了其中的一小部分:

0x00000000 117964807无人600 2147483648 1 dest 0x00000000 117997576无人600 2147483648 1 dest 0x00000000 118030345无人600 2147483648 1 dest 0x00000000 118063114无人600 2147483648 1 dest

  • 在php.ini中禁用eAccelerator并删除创建的共享内存区域:

for i in ipcs -m | cut -d' ' -f2 | grep '^[0-9]';do ipcrm -m $i;done

票数 7
EN

Stack Overflow用户

发布于 2012-04-28 04:06:11

Rasmus Lerdorf在2010年的Confoo上做了一个关于PHP性能的会议,他以Wordpress博客为例,这应该会给你提供很好的工具来回答你的问题:

http://talks.php.net/show/confoo10/1

总结一下:

PHP

  • 运行phpinfo()并禁用您不使用的扩展。它们会占用大量的内存(imagick,curl,...),

  • 使用inclued.so扩展生成一个包含的图形。你可能会在你的wordpress设置中加载无用的函数。

  • 使用siege运行基准测试。有时,微小的优化对性能有很大的影响,所以请确保您有指标,以帮助您的decisions.

  • Use callgrind,以显示您的性能损失的地方。在我的一个项目中,我使用md5()来散列我的SQL查询并缓存它们。

md5()调用占用了20%的时间。

如果可能的话,我肯定会从禁用PHP扩展开始。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10353568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档