在Ubuntu上限制PHP-FPM资源使用可以通过配置文件来实现。以下是一些常见的方法:
php-fpm.conf和www.conf编辑php-fpm.conf文件:
打开/etc/php/7.x/fpm/php-fpm.conf(将7.x替换为你的PHP版本)。
sudo nano /etc/php/7.x/fpm/php-fpm.conf
找到并修改以下参数:
; 设置最大进程数
pm.max_children = 5
; 设置每个子进程的最大请求数
pm.max_requests = 500
; 设置进程空闲时间超过此值时自动重启
pm.process_idle_timeout = 10s
编辑www.conf文件:
打开/etc/php/7.x/fpm/pool.d/www.conf。
sudo nano /etc/php/7.x/fpm/pool.d/www.conf
找到并修改以下参数:
; 设置最大进程数
pm.max_children = 5
; 设置每个子进程的最大请求数
pm.max_requests = 500
; 设置进程空闲时间超过此值时自动重启
pm.process_idle_timeout = 10s
systemd服务配置如果你使用的是systemd来管理PHP-FPM服务,可以在服务文件中添加资源限制。
编辑PHP-FPM服务文件:
打开/lib/systemd/system/php7.x-fpm.service(将7.x替换为你的PHP版本)。
sudo nano /lib/systemd/system/php7.x-fpm.service
在[Service]部分添加以下行:
[Service]
...
LimitNOFILE=65535
LimitMEMLOCK=infinity
重新加载systemd配置并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart php7.x-fpm
cgroups如果你需要更细粒度的控制,可以使用cgroups来限制PHP-FPM的资源使用。
安装cgroup-tools:
sudo apt-get install cgroup-tools
创建一个新的cgroup:
sudo cgcreate -g memory:/php-fpm
设置内存限制:
echo "1G" | sudo tee /sys/fs/cgroup/memory/php-fpm/memory.limit_in_bytes
将PHP-FPM进程移动到新的cgroup:
首先找到PHP-FPM的主进程ID:
ps aux | grep php-fpm
然后将主进程移动到新的cgroup:
sudo cgclassify -g memory:/php-fpm <PID>
cgroups时,确保你有足够的权限来管理cgroup。通过以上方法,你可以在Ubuntu上有效地限制PHP-FPM的资源使用。