商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > php-fpm在Linux上的资源限制怎么设置

php-fpm在Linux上的资源限制怎么设置

  发布于2026-07-10 阅读(0)

扫一扫,手机访问

在 Linux 上跑 PHP-FPM,资源限制这事儿看似不起眼,但真要是踩了坑——文件描述符撑爆、内存锁不住、CPU 飙上天——那排查起来简直让人头秃。好在系统本身提供了好几种成熟的解决方案,从底层到应用层都有招。下面直接说干货,三种主流方法,各位可以根据自己的环境灵活选。

php-fpm在Linux上的资源限制怎么设置

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

如果你的系统采用 systemd 管理 PHP-FPM 服务(现在大多数主流发行版都是这样),那直接在服务单元文件里加参数就行,干净利落。找到 /etc/systemd/system/php-fpm.service/lib/systemd/system/php-fpm.service,在 [Service] 区块里添加类似这样的配置:

[Service]
...
LimitNOFILE=65535
LimitMEMLOCK=infinity

这里 LimitNOFILE 控制最大文件描述符数量,LimitMEMLOCK 控制可锁定的内存上限。具体数值根据你的业务负载来定,别一刀切。改完之后记得重载配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart php-fpm

使用 cgroups 设置资源限制

cgroups 是 Linux 内核自带的“资源隔离武器”,可以精确限制进程组的内存、CPU 等资源。要玩这个,先确保装了 cgroup-tools 包。接着一步步来:

  • 创建一个新的 cgroup:
sudo cgcreate -g memory,cpu:/php-fpm
  • 设置内存上限(比如 1GB):
echo "1G" | sudo tee /sys/fs/cgroup/memory/php-fpm/memory.limit_in_bytes
  • 设置 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
  • 最后把 PHP-FPM 主进程塞进这个 cgroup:
sudo cgclassify -g memory,cpu:/php-fpm 

主进程 PID 通常可以在 /usr/sbin/php-fpm/usr/local/sbin/php-fpm 找到,或者直接用 pidof php-fpm 获取。

使用 ulimit 设置资源限制

如果不想动 systemd 和 cgroups,也可以直接在 PHP-FPM 的启动脚本(比如 /etc/init.d/php-fpm/etc/init.d/php7.x-fpm)里设置 ulimit。启动前先把各项限制拉满:

ulimit -n 65535
ulimit -m unlimited
ulimit -l unlimited
ulimit -u 2048
ulimit -T unlimited

这几行分别对应文件描述符数量、内存锁定大小、堆栈大小、用户进程数和 CPU 时间。改完之后重启服务:

sudo service php-fpm restart

需要提醒的是,这三种方法不是互斥的,混用时可能会相互覆盖或冲突。实际项目中建议优先选一种最贴合运维体系的方式,然后做透测试再上线。

本文转载于:https://www.yisu.com/ask/47937070.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注