为了高效利用服务器,今天特地把博客迁移到一台只有 1G 内存的新服务器上。原想一个静态博客而已,耗不了多大机器性能。不曾想,1G 的内存很快就不够用了,看了一下,连 swap 都被用上了。于是赶紧用命令查下各进程的内存开销:
$ ps aux
发现占据一大半内存的是一堆 php-fpm
相关的子进程。看来是 php-fpm
的配置不合理,导致它们被不合理地创建出来。这就要分析 php-fpm
创建子进程的方式了。
php-fpm
有三种孵化子进程的方式,一般可在 /etc/php-fpm.d/www.conf
里面,通过指定 pm
的值(例如,pm = dynamic
),结合对应的参数(例如,pm.max_children = 50
)来配置。这三种孵化方式分别是:
- 静态
static
- 动态
dynamic
- 按需
ondemand
下面就分别来讨论这三种方式。