linux

PHP-FPM在Linux下的资源限制

小樊
41
2025-09-08 13:16:17
栏目: 编程语言

PHP-FPM在Linux下的资源限制可通过以下方式设置:

  1. 系统服务配置(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并重启服务。
  2. cgroups控制组

    • 安装工具:sudo apt-get install cgroup-tools
    • 创建cgroup:sudo cgcreate -g cpu,memory:/php-fpm
    • 设置限制:
      • 内存:echo "1G" | sudo tee /sys/fs/cgroup/memory/php-fpm/memory.limit_in_bytes
      • CPU:echo "50000" | sudo tee /sys/fs/cgroup/cpu/php-fpm/cpu.cfs_quota_us(配合cpu.cfs_period_us=100000,即50%)。
    • 将PHP-FPM进程加入cgroup:sudo cgclassify -g cpu,memory:/php-fpm $(pgrep php-fpm)
  3. 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,避免重复配置。需根据服务器资源合理调整参数,避免过度限制导致服务异常。

0
看了该问题的人还看了