在Ubuntu上,PHP-FPM(FastCGI Process Manager)的资源限制可以通过配置文件进行设置。主要涉及以下几个方面:
PHP-FPM配置文件:
PHP-FPM的主要配置文件通常位于/etc/php/{version}/fpm/pool.d/www.conf
,其中{version}
是PHP的版本号。例如,对于PHP 7.4,配置文件路径可能是/etc/php/7.4/fpm/pool.d/www.conf
。
在这个文件中,你可以设置以下资源限制:
pm.max_children
:允许的最大子进程数。pm.start_servers
:启动时的服务器进程数。pm.min_spare_servers
:最小空闲服务器进程数。pm.max_spare_servers
:最大空闲服务器进程数。pm.max_requests
:每个子进程在被重启之前可以处理的请求数。例如:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
系统资源限制:
除了PHP-FPM本身的配置,你还可以通过系统的ulimit
命令来限制PHP-FPM进程的资源使用。例如,你可以限制每个PHP-FPM进程的最大内存使用量:
ulimit -m 128000 # 限制为128MB
ulimit -v 128000 # 限制为128MB
这些设置通常需要在PHP-FPM启动脚本中添加,或者在系统的全局资源限制文件(如/etc/security/limits.conf
)中进行配置。
Nginx或Apache配置:
如果你使用Nginx或Apache作为Web服务器,你还需要在它们的配置文件中设置相应的资源限制。例如,在Nginx中,你可以设置worker_processes
和worker_connections
来控制资源使用:
worker_processes auto;
events {
worker_connections 1024;
}
在Apache中,你可以设置StartServers
、MinSpareServers
、MaxSpareServers
和MaxRequestWorkers
等参数:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
通过以上配置,你可以有效地限制PHP-FPM在Ubuntu上的资源使用,确保系统的稳定性和性能。