PHP-FPM在Linux下的资源限制可通过以下方式设置:
系统服务配置(systemd)
编辑PHP-FPM的systemd服务文件(如/etc/systemd/system/php-fpm.service
),在[Service]
中添加参数:
LimitNOFILE
:限制文件描述符数量(如65535
)。LimitMEMLOCK
:限制内存锁定大小(如infinity
或具体值)。LimitRSS
:限制进程常驻内存集大小(如512M
)。CPUQuota
:限制CPU使用比例(需结合cpu.cfs_period_us
,如50000
表示50%)。sudo systemctl daemon-reload
并重启服务。cgroups控制组
sudo apt-get install cgroup-tools
。sudo cgcreate -g cpu,memory:/php-fpm
。echo "1G" | sudo tee /sys/fs/cgroup/memory/php-fpm/memory.limit_in_bytes
。echo "50000" | sudo tee /sys/fs/cgroup/cpu/php-fpm/cpu.cfs_quota_us
(配合cpu.cfs_period_us=100000
,即50%)。sudo cgclassify -g cpu,memory:/php-fpm $(pgrep php-fpm)
。PHP-FPM配置文件
编辑/etc/php/{version}/fpm/pool.d/www.conf
,设置:
pm.max_children
:限制最大子进程数。php_admin_value[memory_limit]
:限制单个脚本内存(如128M
)。request_terminate_timeout
:限制请求执行时间(如30s
)。pm.start_servers
/pm.min_spare_servers
/pm.max_spare_servers
:调整进程池参数。sudo systemctl restart php{version}-fpm
。注意:不同方法可能相互影响,建议优先使用systemd或cgroups,避免重复配置。需根据服务器资源合理调整参数,避免过度限制导致服务异常。