网站服务器PHP最大连接满载如何解决方法以及相关教程

本文作者:小爱哥哥 发布时间:2025年10月25日 浏览次数:17 23时:29分

声明一点。这篇文章是在优化PHP功能。若你的流量超过一万你最好是升级服务器。

刚才突然点了一下自己测试的网站,前台页面出现了504,

然后我去宝塔后台看了一眼竟然CPU和内存全红了。要知道我服务器是4G*4G的。PHP版本7.4.   Nginx系统。一般情况下。四五千IP是不应该出现的。如图。

下面这张图是宝塔后台的首页:

网站服务器PHP最大连接满载如何解决方法以及相关教程

网站前台页面出现504页面如图:

网站服务器PHP最大连接满载如何解决方法以及相关教程

然后我就是去查看了一下网站的错误日志:提取到了一条提醒如下:

connect() to unix:/tmp/php-cgi-74.sock failed (11: Resource temporarily unavailable) while connecting to upstream
从Nginx 错误日志来看,核心问题是php-fpm进程资源耗尽,导致 Nginx 无法与php-fpm正常通信,这正是引发 504 错误的直接原因。

错误日志关键信息分析

所有错误均显示:

connect() to unix:/tmp/php-cgi-74.sock failed (11: Resource temporarily unavailable) while connecting to upstream

  • 含义:Nginx 尝试通过/tmp/php-cgi-74.sock与 PHP-FPM 通信,但失败了,原因是 “资源暂时不可用”。
  • 本质:php-fpm的进程数达到上限(pm.max_children),或服务器内存 / 文件描述符等资源耗尽,无法处理新的请求,导致新连接被拒绝。

我第一时间想到去调整PHP的连接进程数:pm.max_children(最大进程数)

要进到服务器的文件目录里大概位置在:/www/server/php/74/etc/php-fpm.conf(其实这个文件为主配置文件)下面会说到www文件专用的子配置文件位置。

下面图的数值我是按照我的4*4服务器来设置的。你要视自己的情况而定!

网站服务器PHP最大连接满载如何解决方法以及相关教程

当前php-fpm.conf配置,pm.max_children已经设为 150,属于较高的进程数配置。这种情况下仍出现资源不足的错误

 检查服务器实际内存能否支撑 150 个进程

假设每个php-fpm进程平均占用100MB 内存,150 个进程就需要150*100MB=15GB内存。若服务器物理内存不足(比如只有 4GB 或 8GB),即使进程数设得很高,也会因内存耗尽导致资源不可用。
  • 执行free -h查看内存使用情况,确认available内存是否充足。

检查request_terminate_timeout是否过短

当前配置中request_terminate_timeout = 100(脚本最大执行时间 100 秒),若业务脚本确实需要长时间运行,可适当调高该值(比如设为 300),避免脚本因超时被强制终止,进而导致进程异常。

检查系统文件描述符限制

即使进程数足够,若系统允许的文件描述符(打开文件数)不足,也会导致 “资源暂时不可用”。
  • 执行ulimit -n查看当前用户的文件描述符限制,若数值较小(如 1024),需修改/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

检查文件是否存在

执行命令:

bash
ls /etc/security/limits.conf
若提示 “没有该文件或目录”,可能是系统路径被误读,可尝试重新创建:
bash
touch /etc/security/limits.conf

网站服务器PHP最大连接满载如何解决方法以及相关教程

 

网站服务器PHP最大连接满载如何解决方法以及相关教程

网站服务器PHP最大连接满载如何解决方法以及相关教程

同时在php-fpm.conf中确保rlimit_files = 65535,然后重启PHP或服务器生效。

配置 systemd 服务的文件描述符限制

编辑/etc/systemd/system.conf文件:

bash
vi /etc/systemd/system.conf
添加或修改以下内容:
plaintext
DefaultLimitNOFILE=65535
如果文件里有要把前面的#号去掉。不然是在注释状态就是不能用。别忘记保存再退出。
网站服务器PHP最大连接满载如何解决方法以及相关教程
保存并退出后,执行:
bash
systemctl daemon-reload

验证配置是否生效

服务器启动后,获取php-fpm主进程 PID:

bash
ps aux | grep php-fpm
检查文件描述符限制:
bash
cat /proc/[主进程PID]/limits | grep "Open files"
Soft LimitHard Limit显示为65535,则配置生效。

也可用下面的命令:查看完整信息

cat /proc/966/limits
网站服务器PHP最大连接满载如何解决方法以及相关教程

保存。退出后。我重启了一下PHP软件。好像可以了。但是没等几分钟又出现了这种情况 。这个时候。我去又去查看了一下这个php-fpm.conf文件。确定已经保存过了。

然后我查了一下www文件(这个是网站所在的文件)所对应的专属PHP配置文件目录在:/www/server/php/74/etc/php-fpm.d/www.conf文件如图:
网站服务器PHP最大连接满载如何解决方法以及相关教程

看好。我所有需要修改的文件都会备份一下。如果有任何问题。直接恢复重新修改孓好了。

这个www专属PHP配置文件名:www.conf是针对网站目录的。而php-fpm.conf   PHP配置是针对整个服务器来配置的。所以www.conf的优先级最高(针对www文件夹的网站来说)

所以这个www.conf   PHP配置文件可以和主配置文件相同,也可以比主配文件高。如果系统读取到了www.conf文件的话。后边的主配文件php-fpm.conf就会被忽略掉!

网站服务器PHP最大连接满载如何解决方法以及相关教程

保存后重启,需要时刻关注网站前台页面的情况 。然后再查看网站错误日志。对比来查找并解决问题。

保存修改后一定要重启PHP或者服务器。不然不会生效。!

- THE END -

本文来源:非特殊说明,本博所有文章均为博主原创。  |  本站部分文章来源于网络,若侵犯了您的权益,请附说明联系删除

共有 0 条评论---(要不...来一句吧,实再不行抽一根也中!)