在Ubuntu上,您可以使用systemd
和cgroups
来限制PHP-FPM的资源使用。以下是限制PHP-FPM资源的步骤:
首先,确保您的系统已经安装了systemd
和cgroups
。在大多数现代Ubuntu版本中,这些组件默认已安装。
创建一个新的systemd
服务文件,用于限制PHP-FPM的资源使用。在/etc/systemd/system/
目录下创建一个名为php-fpm-limit.service
的文件:
sudo nano /etc/systemd/system/php-fpm-limit.service
LimitNOFILE
、LimitMEMLOCK
、LimitRSS
等参数:[Unit]
Description=PHP FastCGI Process Manager with resource limits
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/run/php/php7.4-fpm.pid
ExecStart=/usr/sbin/php-fpm7.4 --nodaemonize --fpm-config /etc/php/7.4/fpm/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
ProtectSystem=full
ProtectHome=read-only
ProtectKernelTunables=read-only
ProtectKernelModules=read-only
LimitNOFILE=65535
LimitMEMLOCK=infinity
LimitRSS=512M
TasksMax=infinity
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
在这个例子中,我们限制了PHP-FPM进程的最大内存使用量为512MB。您可以根据需要调整这些值。
保存并关闭文件。
重新加载systemd
配置以识别新创建的服务:
sudo systemctl daemon-reload
sudo systemctl stop php7.4-fpm
sudo systemctl start php-fpm-limit.service
sudo systemctl status php-fpm-limit.service
现在,您的PHP-FPM进程应该受到在php-fpm-limit.service
文件中定义的资源限制。
请注意,这个示例是针对PHP 7.4的。如果您使用的是其他版本的PHP,请相应地修改ExecStart
行中的路径。