首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php-fpm占用了太多内存

php-fpm占用了太多内存
EN

Server Fault用户
提问于 2013-03-18 14:53:28
回答 2查看 4.8K关注 0票数 1

我使用的是Nginx+ php和php 5.3.6,它工作了几个星期。几天前,我发现大多数PHP子程序的开销为3MB,但也有几个子程序占用了700 3MB。web应用程序忙于1000个请求/秒。PHP与APC一起使用(操作码使用)

有人能指点这个吗?

代码语言:javascript
复制
This script I used to get memory usage by child pid 
 http://www.pixelbeat.org/scripts/ps_mem.py.

It could be verified by 'top' method too

top output(limited view)::
------------------------------
------------------------------
28419 daemon    20   0  844m 757m 4200 S    0  6.4   0:14.27 php-fpm                                                          

16788 daemon    20   0  700m 614m 4632 S    0  5.2   0:28.34 php-fpm                                                          

29450 daemon    20   0  669m 581m 3548 S    0  4.9   0:08.31 php-fpm                                                          

17881 daemon    20   0  642m 556m 4108 S    0  4.7   0:14.83 php-fpm                                                          

19048 daemon    20   0  642m 555m 4108 S    0  4.7   0:08.86 php-fpm 
11956 daemon    20   0 97612  10m 5476 S    4  0.1   0:39.57 php-fpm                                                          
11993 daemon    20   0 97560  10m 5188 S    4  0.1   0:39.18 php-fpm                                                          
11925 daemon    20   0 97328  10m 5144 D    3  0.1   0:38.68 php-fpm                                                          
11953 daemon    20   0 97748  10m 5172 S    4  0.1   0:38.51 php-fpm   

php-fpm.conf:

代码语言:javascript
复制
/etc/php-fpm/php-fpm.conf
listen = 127.0.0.1:9000
user = daemon
group = daemon

pm = dynamic
pm.max_children = 2000
pm.start_servers = 50
pm.min_spare_servers = 40
pm.max_spare_servers = 90
pm.max_requests = 10000

以下是更多的调试输入:

pmap::

代码语言:javascript
复制
pmap 28419
0000000000b52000     96K rw---    [ anon ]
0000000001a49000   1668K rw---    [ anon ]
0000000001bea000    208K rw---    [ anon ]
0000000001c1e000 770476K rw---    [ anon ]

斯特拉斯:

代码语言:javascript
复制
strace -p 28419
Process 28419 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...>) = 0
recvfrom(4, 0x1bda1d0, 8196, 64, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN}], 1, 5000)  = 0 (Timeout)
recvfrom(4, 0x1bda1d0, 8196, 64, 0, 0)  = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN}], 1, 5000^C <unfinished ...>

加载的PHP模块如下:

代码语言:javascript
复制
[PHP Modules]
apc
Core
date
ereg
hash
json
libxml
mbstring
mcrypt
memcache
memcached
mysql
mysqli
pcntl
pcre
Reflection
session
SimpleXML
SPL
standard
xml
EN

回答 2

Server Fault用户

发布于 2013-11-30 18:33:09

尝试将最大请求降到类似于pm.max_requests = 100的地方。这将在100个请求之后重新启动进程,释放可能由于脚本中内存泄漏而丢失的内存。

票数 1
EN

Server Fault用户

发布于 2022-08-04 14:45:26

您需要将pm = dynamic更改为pm = ondemand。它将把拉姆的使用量减少一半。

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

https://serverfault.com/questions/488907

复制
相关文章

相似问题

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