在Linux系统中,PHP-FPM(FastCGI Process Manager)是一个用于管理PHP进程的高性能进程管理器。为了防止PHP-FPM消耗过多的系统资源,可以通过配置文件来限制其资源使用。以下是一些常见的资源限制设置:
设置最大子进程数:
在php-fpm.conf或www.conf文件中,可以设置pm.max_children参数来限制最大子进程数。例如:
pm.max_children = 50
设置每个子进程的最大请求数:
通过pm.max_requests_per_child参数,可以限制每个子进程处理的请求数,以防止内存泄漏。例如:
pm.max_requests_per_child = 500
设置请求队列长度:
pm.start_servers、pm.min_spare_servers和pm.max_spare_servers参数可以用来控制启动时的服务器进程数和空闲服务器进程数。例如:
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
设置进程空闲时间:
request_terminate_timeout参数可以设置请求的最大执行时间,超过这个时间的请求将被终止。例如:
request_terminate_timeout = 30s
设置内存限制:
可以通过php_admin_value[memory_limit]来设置每个PHP进程的内存限制。例如:
php_admin_value[memory_limit] = 128M
设置CPU时间限制:
php_admin_value[max_execution_time]可以设置脚本的最大执行时间。例如:
php_admin_value[max_execution_time] = 30
设置文件描述符限制:
可以通过ulimit命令来设置每个进程可以打开的文件描述符数量。例如:
ulimit -n 1024
设置进程数限制:
可以通过systemd服务文件来限制PHP-FPM进程的数量。编辑/etc/systemd/system/php-fpm.service文件,添加或修改以下内容:
[Service]
LimitNOFILE=1024
设置CPU亲和性:
可以通过taskset命令来设置PHP-FPM进程的CPU亲和性,以限制其使用的CPU核心。例如:
taskset -c 0,1 php-fpm
请注意,修改配置文件后,需要重启PHP-FPM服务以使更改生效。可以使用以下命令重启服务:
sudo systemctl restart php-fpm
根据具体的需求和系统资源情况,可以适当调整这些参数以达到最佳的性能和资源利用率。