书写技术成长之路

php-fpm优化配置

一直以来很少关注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

参考

How to reduce PHP-FPM (php5-fpm) RAM usage by about 50%

A better way to run PHP-FPM