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,避免重复配置。需根据服务器资源合理调整参数,避免过度限制导致服务异常。