ubuntu

如何在ubuntu上限制php-fpm的资源使用

小樊
49
2025-03-18 14:46:52
栏目: 编程语言

在 Ubuntu 上限制 PHP-FPM 的资源使用可以通过设置 php-fpm 配置文件中的参数来实现。以下是一些常用的方法:

1. 限制进程数

你可以通过设置 pm.max_children 参数来限制同时运行的 PHP-FPM 进程数。

编辑 php-fpm 配置文件,通常位于 /etc/php/7.x/fpm/pool.d/www.conf/etc/php/7.x/fpm/pool.d/php-fpm.conf

sudo nano /etc/php/7.x/fpm/pool.d/www.conf

找到并修改以下参数:

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

这些参数的含义如下:

2. 限制内存使用

你可以通过设置 php_admin_value[memory_limit] 参数来限制每个 PHP 脚本的内存使用。

编辑 php-fpm 配置文件:

sudo nano /etc/php/7.x/fpm/pool.d/www.conf

找到并添加以下行:

php_admin_value[memory_limit] = 128M

这将限制每个 PHP 脚本最多使用 128MB 的内存。

3. 限制执行时间

你可以通过设置 request_terminate_timeout 参数来限制脚本的最大执行时间。

编辑 php-fpm 配置文件:

sudo nano /etc/php/7.x/fpm/pool.d/www.conf

找到并修改以下参数:

request_terminate_timeout = 30s

这将限制每个请求的最大执行时间为 30 秒。

4. 限制 CPU 使用

限制 CPU 使用比较复杂,因为 PHP-FPM 本身没有直接的 CPU 限制参数。你可以通过操作系统的工具来实现,例如 cgroups

使用 cgroups 限制 CPU 使用

  1. 安装 cgroup-tools

    sudo apt-get install cgroup-tools
    
  2. 创建一个新的 cgroup:

    sudo cgcreate -g cpu:/php-fpm
    
  3. 设置 CPU 使用限制(例如,限制为 50%):

    echo 50000 | sudo tee /sys/fs/cgroup/cpu/php-fpm/cpu.cfs_quota_us
    echo 100000 | sudo tee /sys/fs/cgroup/cpu/php-fpm/cpu.cfs_period_us
    
  4. 将 PHP-FPM 进程添加到 cgroup:

    sudo pgrep -u www-data php-fpm | xargs -I {} sudo cgclassify -g cpu:/php-fpm {}
    

5. 重启 PHP-FPM 服务

完成上述配置后,重启 PHP-FPM 服务以使更改生效:

sudo systemctl restart php7.x-fpm

7.x 替换为你当前安装的 PHP 版本。

通过这些方法,你可以有效地限制 PHP-FPM 的资源使用,确保系统资源的合理分配和使用。

0
看了该问题的人还看了