在Ubuntu系统中调整PHP并发连接数,看似简单,但许多初学者容易忽略一个关键点:并发连接数并非由PHP单独决定,而是与Web服务器(如Apache或Nginx)以及PHP-FPM的配置密切相关。换言之,需要从两个层面入手——一是Web服务器自身的请求处理能力,二是PHP进程池的任务处理能力。下面将详细拆解。

1. 调整Web服务器的并发连接数
Apache
若您使用Apache服务器,核心参数位于 mpm_prefork 或 mpm_event 模块中。通常需要编辑主配置文件 /etc/apache2/apache2.conf(具体路径可能因发行版而略有不同)。
- MaxRequestWorkers:该参数定义Apache能够同时处理的最大请求数量,即服务器同时可服务的最大连接数。应根据服务器内存和CPU性能合理设置,避免过高导致内存耗尽。例如,可设置为150。
- StartServers、MinSpareServers、MaxSpareServers:这些参数用于控制Apache启动时预留的进程数量以及空闲进程的上下限。合理配置可减少频繁创建和销毁进程的开销。例如:
StartServers 5、MinSpareServers 5、MaxSpareServers 10。
修改完成后,需要重启Apache服务:sudo systemctl restart apache2。
Nginx
Nginx的并发模型与Apache不同,它采用事件驱动架构,因此配置思路也有所区别。主配置文件通常位于 /etc/nginx/nginx.conf。
- worker_processes:该参数设置Nginx的工作进程数量,通常建议设为CPU核心数,或直接使用
auto让系统自动检测。 - worker_connections:每个worker进程可同时打开的最大连接数。该值乘以worker_processes即为Nginx能够处理的最大并发连接数。例如,可设置为1024。
配置示例:
events {
worker_connections 1024;
}
同样,修改后需重启Nginx服务:sudo systemctl restart nginx。
2. 调整PHP的并发连接数
PHP本身没有直接控制并发数的参数,其核心依赖是PHP-FPM。PHP-FPM管理着一个进程池,负责处理所有PHP请求。配置文件位于 /etc/php/7.x/fpm/pool.d/www.conf(请根据实际PHP版本号替换路径)。
PHP-FPM
- pm.max_children:这是最关键的参数,用于定义PHP-FPM最多能同时创建的子进程数量。每个子进程处理一个请求,因此该值直接决定了PHP能够同时处理的最大请求数。例如,设置为50,则最多允许50个PHP请求同时运行。
- pm.start_servers、pm.min_spare_servers、pm.max_spare_servers:这些参数分别控制进程池的初始进程数、最小空闲进程数和最大空闲进程数。合理配合使用,可使PHP-FPM根据实际负载动态调整进程数量,避免资源浪费或响应延迟。
示例配置:
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
修改完成后,重启PHP-FPM服务:sudo systemctl restart php7.x-fpm。
通过以上步骤,您可以分别从Web服务器和PHP两个层面调整并发能力。最后需要提醒的是,参数并非越大越好,必须结合服务器实际资源(如内存、CPU、磁盘I/O)进行合理配置,否则可能导致系统崩溃。建议先小幅度调整参数,使用压力测试工具验证效果,再逐步优化至最佳值。
