一直以来很少关注PHP-FPM的配置,偶然一天看到一篇技术文章,讲述的是PHP-FPM占用的大量的内存和CPU,如何优化的问题。
在/etc/php-fpm.conf.default
中 PHP-FPM的默认配置是pm = dynamic
, 也就是动态的分配php-fpm的子进程,这就导致了
一些分配的进程没有被使用,只是等在那里,所以占用了内存。
文章里提到的最重要的就是改变这种动态分配子进程的方式,改用在需要时才分配,大大节约了内存和CPU
# 优化前的配置
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
# 优化后的配置
pm = ondemand
pm.max_children = 75
pm.process_idle_timeout = 10s
pm.max_requests = 500