linux – php-cgi进程的内存使用量正在稳步增长
我正在尝试在VPS上设置Web服务器.我的问题是php-cgi进程的内存使用量随着时间的推移而增加,即使网站根本没有收到任何流量. (暂时在防火墙后面)
VPS有360MB RAM.我正在使用Debian Lenny 32bit及其lighttpd和php5-cgi软件包.除了一些配置更改(下面列出),我正在使用Debian的库存设置. 该网站基于Drupal.使用Drupal的devel模块,我可以看出PHP脚本的内存使用量平均不到20KB,而且它永远不会超过8MB. 以下是ps aux输出的相关部分: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND www-data 29871 0.0 1.7 54552 6368 ? Ss Aug12 0:00 /usr/bin/php-cgi www-data 29873 0.0 7.4 65808 27468 ? S Aug12 0:00 /usr/bin/php-cgi www-data 29874 0.0 3.7 55808 13736 ? S Aug12 0:00 /usr/bin/php-cgi www-data 29875 0.0 4.3 58040 16204 ? S Aug12 0:00 /usr/bin/php-cgi www-data 29876 0.0 4.4 57444 16288 ? S Aug12 0:00 /usr/bin/php-cgi www-data 29877 0.0 1.7 54552 6368 ? Ss Aug12 0:00 /usr/bin/php-cgi www-data 29879 0.0 9.6 67140 35684 ? S Aug12 0:26 /usr/bin/php-cgi www-data 29880 0.0 6.6 59172 24492 ? S Aug12 0:23 /usr/bin/php-cgi www-data 29881 0.0 7.1 59784 26388 ? S Aug12 0:22 /usr/bin/php-cgi www-data 29882 0.0 7.4 60880 27440 ? S Aug12 0:23 /usr/bin/php-cgi >让php-cgi这么大是正常的吗? 搜索已知的内存泄漏错误并没有产生任何相关性.如果默认的Debian软件包/配置有如此明显的内存泄漏,我会感到惊讶.同一主机上的其他用户没有此问题. 到目前为止我所做的是将PHP_FCGI_MAX_REQUESTS设置为一个较低的值,以便快速回收php-cgi进程.当我使用ab来模拟高负载时,这非常有效.进程在高于10MB之前快速死亡.但是,在中低负载下,所有进程都会稳定增长(由于负载平衡),并且大多数进程同时消耗28MB,这使我的VPS面临交换风险.请注意,即使没有任何流量,流程也会稳步增长. 我可以减少php-cgi进程的数量,但这感觉就像解决方法而不是修复.如果php-cgi通常像这样增长,我会感到惊讶. 另外,总结php-cgi进程的RSS总数给出: $ps -C php-cgi -o rss= | awk '{s+=$1}END{print s/1024}' 195.738 然而,free -m给出了以下输出: total used free shared buffers cached Mem: 360 351 8 0 33 190 -/+ buffers/cache: 127 232 Swap: 255 0 255 >我错过了什么吗?为什么使用的内存(没有缓冲区)低于主机上php-cgi进程的总驻留内存? 我有以下PHP扩展: PHP5-CGI xcache.size设置为24M.它曾经是32M,但减少它并没有帮助. xcache.var_size设置为0.其余插件使用库存配置. xcache管理页面显示xcache使用的不到1MB. PHP的memory_limit设置为32M. 这是我的FastCGI配置: fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi","socket" => "/tmp/php.socket","max-procs" => 2,"idle-timeout" => 20,"bin-environment" => ( "PHP_FCGI_CHILDREN" => "4","PHP_FCGI_MAX_REQUESTS" => "1000" ),"bin-copy-environment" => ( "PATH","SHELL","USER" ),"broken-scriptfilename" => "enable" )) ) 我使用Debian附带的股票lighttpd.conf或多或少. 如果我能提供任何其他数据,请告诉我. 任何帮助表示赞赏.我一直试图解决这个问题好几天.我已经没想完了. 解决方法
尝试降低var_size.如果我们有64MB的价值,几个小时后就开始交换了很多,接下来的几个小时它就完全失效了.尝试将原始设置保持在32M,也许这应该对你有很大帮助 – 我们在
travel网站遇到了同样的问题Xcache仍然是很多有缺陷的软件:(
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |