如何减lessCentOS 6.4中的php-fpm RAM使用情况?

我在我的服务器上安装了LEMP堆栈。 我的服务器有1GB的RAM空载。 我已经安装了php-fpm,它看起来像使用我的服务器的大部分内存

我使用下面的命令来获取正在运行的程序列表:

ps aux 

而这个命令产生的结果是:

 [user@server]$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 19232 1348 ? Ss Aug23 0:00 init root 2 0.0 0.0 0 0 ? S Aug23 0:00 [kthreadd/145] root 3 0.0 0.0 0 0 ? S Aug23 0:00 [khelper/145] root 125 0.0 0.0 10640 476 ? S<s Aug23 0:00 /sbin/udevd -d root 462 0.0 0.1 183552 1936 ? Sl Aug23 0:00 /sbin/rsyslogd root 476 0.0 0.1 66256 1200 ? Ss Aug23 0:00 /usr/sbin/sshd root 483 0.0 0.0 22136 988 ? Ss Aug23 0:00 xinetd -stayali root 519 0.0 0.1 11304 1532 ? S Aug23 0:00 /bin/sh /usr/bi mysql 726 0.0 4.6 781640 49200 ? Sl Aug23 3:30 /usr/libexec/my root 765 0.0 0.0 66444 968 ? Ss Aug23 0:00 /usr/sbin/sasla root 767 0.0 0.0 66444 660 ? S Aug23 0:00 /usr/sbin/sasla root 784 0.0 0.2 82496 2360 ? Ss Aug23 0:07 sendmail: accep smmsp 792 0.0 0.1 78228 2072 ? Ss Aug23 0:00 sendmail: Queue root 802 0.0 0.4 278324 4472 ? Ss Aug23 0:11 php-fpm: master nginx 804 0.0 5.5 305848 58388 ? S Aug23 0:18 php-fpm: pool w nginx 805 0.0 5.4 305528 57432 ? S Aug23 0:18 php-fpm: pool w nginx 806 0.0 5.4 304972 57440 ? S Aug23 0:19 php-fpm: pool w nginx 807 0.0 5.9 308032 62004 ? S Aug23 0:19 php-fpm: pool w nginx 808 0.0 5.2 298328 55292 ? S Aug23 0:19 php-fpm: pool w root 818 0.0 0.4 96768 4812 ? Ss Aug23 0:00 nginx: master p root 829 0.0 0.1 20412 1264 ? Ss Aug23 0:01 crond nginx 852 0.0 5.3 299400 55724 ? S Aug23 0:18 php-fpm: pool w nginx 1054 0.0 5.6 305744 59072 ? S Aug23 0:17 php-fpm: pool w nginx 4211 0.0 5.8 308008 60992 ? S Aug23 0:17 php-fpm: pool w nginx 4215 0.0 5.7 308332 60720 ? S Aug23 0:17 php-fpm: pool w nginx 4216 0.0 5.6 305840 59300 ? S Aug23 0:18 php-fpm: pool w root 13238 0.0 0.4 95924 4232 ? Ss 19:41 0:00 sshd: user [pr user 13242 0.0 0.1 95924 1828 ? S 19:41 0:00 sshd: user@pts user 13243 0.0 0.1 11440 1816 pts/0 Ss 19:41 0:00 -bash nginx 13488 0.0 0.3 97184 3416 ? S 21:07 0:00 nginx: worker p nginx 13489 0.0 0.3 97184 3416 ? S 21:07 0:00 nginx: worker p nginx 13490 0.0 0.3 97448 4064 ? S 21:07 0:00 nginx: worker p nginx 13491 0.0 0.3 97184 3416 ? S 21:07 0:00 nginx: worker p user 13508 0.0 0.1 13372 1060 pts/0 R+ 21:13 0:00 ps aux 

正如你所看到的,php-fpm进程正在使用大量的RAM。 告诉我如何优化php-fpm并减less服务器的内存消耗。

默认情况下,PHP的FMP可以有一个非常大量的子服务器运行…每个这些可以采取20-30兆RAM,可以很容易地加起来…

最简单的做法是减less默认启动服务器,并在您的服务器的php-fpm conf中的最大服务器…

要编辑的文件通常是/etc/php-fpm.d/www.conf 。 一个较小的网站的典型设置将是

 pm.max_children = 10 pm.start_servers = 3 pm.min_spare_servers = 2 pm.max_spare_servers = 3 

显然,你需要阅读文档(或者至less是默认的conf文件中的注释),但是这些示例设置应该从90-100MB开始,当所有的孩子都运行起来的时候,最多可以达到300-400MB 。

根据你的需要,你应该适当地使用这些数字。 (根据stream量testingconfiguration和真实世界RAM的使用情况)。

〜每个进程〜60MB不是一个奇怪的值。

如果您需要消耗更less的内存,则可以减less池中的工人数量。

  1. PS不能准确地告诉你有多less内存使用,检查与此:

    http://www.pixelbeat.org/scripts/ps_mem.py

  2. php.ini设置memory_limit

对于以下列出的每个configuration文件:

 php --ini 

逐个注释掉你不使用的模块的扩展行:

 ; extension=redis.so 

每次重新启动php-fpm。

另外,如果安装了APC或其他优化器,则每个实例都会占用N MB的RAM,如apc.ini中所configuration的。