在Linux上,可以通过多种方式来设置PHP-FPM的资源限制,以确保系统的稳定性和安全性。以下是一些常见的方法:
如果您的系统使用systemd管理服务,可以在PHP-FPM的服务文件中设置资源限制。通常,该文件位于/etc/systemd/system/php-fpm.service
或/lib/systemd/system/php-fpm.service
。
在 [Service]
部分添加以下内容:
LimitNOFILE=65535
LimitMEMLOCK=infinity
这将分别设置文件描述符限制为65535和内存锁定限制为无限制。你可以根据需要调整这些值。
cgroups(控制组)是Linux内核的一个功能,可以用来限制进程组的资源使用。要使用cgroups限制PHP-FPM的资源,请按照以下步骤操作:
sudo apt-get install cgroup-tools
sudo cgcreate -g memory,cpu:/php-fpm
echo "1G" | sudo tee /sys/fs/cgroup/memory/php-fpm/memory.limit_in_bytes
echo "50%" | sudo tee /sys/fs/cgroup/cpu/php-fpm/cpu.cfs_quota_us
这将限制PHP-FPM进程组的内存使用为1GB,CPU使用为50%。
sudo systemctl restart php-fpm
ulimit
命令可以用来设置shell会话的资源限制。要使用ulimit限制PHP-FPM的资源,请按照以下步骤操作:
打开PHP-FPM的启动脚本(通常位于/etc/init.d/php-fpm
或/etc/init.d/php7.x-fpm
,其中x是PHP版本号)。
在 start
函数中添加以下内容:
ulimit -n 65535
ulimit -m unlimited
这将分别设置文件描述符限制为65535和内存锁定限制为无限制。
PHP-FPM的配置文件通常位于/etc/php/7.x/fpm/pool.d/www.conf
或/etc/php-fpm.conf
。
在配置文件中,可以设置以下参数来限制资源使用:
pm.max_children
:设置最大子进程数。pm.start_servers
:设置启动时的子进程数。pm.min_spare_servers
:设置最小空闲子进程数。pm.max_spare_servers
:设置最大空闲子进程数。request_terminate_timeout
:设置脚本的最大执行时间。memory_limit
:设置每个PHP脚本的内存使用限制。例如,以下配置将限制最大子进程数为50,启动时的子进程数为5,最小空闲子进程数为5,最大空闲子进程数为35,每个脚本的内存使用限制为128MB,脚本的最大执行时间为30秒。
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
request_terminate_timeout = 30s
memory_limit = 128M
完成上述配置后,保存配置文件并重启PHP-FPM服务以使更改生效。
sudo systemctl restart php7.x-fpm
通过合理配置这些参数,可以有效地限制PHP-FPM的资源使用,确保系统资源的合理分配和使用。