linux

PHP-FPM在Linux上的资源限制

小樊
45
2025-06-25 04:58:44
栏目: 编程语言

在Linux上,可以通过多种方式来设置PHP-FPM的资源限制,以确保系统的稳定性和安全性。以下是一些常见的方法:

使用systemd服务文件设置资源限制

如果您的系统使用systemd管理服务,可以在PHP-FPM的服务文件中设置资源限制。通常,该文件位于/etc/systemd/system/php-fpm.service/lib/systemd/system/php-fpm.service

[Service] 部分添加以下内容:

LimitNOFILE=65535
LimitMEMLOCK=infinity

这将分别设置文件描述符限制为65535和内存锁定限制为无限制。你可以根据需要调整这些值。

使用cgroups设置资源限制

cgroups(控制组)是Linux内核的一个功能,可以用来限制进程组的资源使用。要使用cgroups限制PHP-FPM的资源,请按照以下步骤操作:

  1. 安装cgroup-tools(如果尚未安装):
sudo apt-get install cgroup-tools
  1. 创建一个新的cgroup:
sudo cgcreate -g memory,cpu:/php-fpm
  1. 设置内存和CPU限制:
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%。

  1. 重启PHP-FPM服务以应用更改:
sudo systemctl restart php-fpm

使用ulimit设置资源限制

ulimit命令可以用来设置shell会话的资源限制。要使用ulimit限制PHP-FPM的资源,请按照以下步骤操作:

  1. 打开PHP-FPM的启动脚本(通常位于/etc/init.d/php-fpm/etc/init.d/php7.x-fpm,其中x是PHP版本号)。

  2. start 函数中添加以下内容:

ulimit -n 65535
ulimit -m unlimited

这将分别设置文件描述符限制为65535和内存锁定限制为无限制。

使用PHP-FPM配置文件设置资源限制

PHP-FPM的配置文件通常位于/etc/php/7.x/fpm/pool.d/www.conf/etc/php-fpm.conf

在配置文件中,可以设置以下参数来限制资源使用:

例如,以下配置将限制最大子进程数为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的资源使用,确保系统资源的合理分配和使用。

0
看了该问题的人还看了