CentOS + 宝塔服务器偶发 SSH、面板、网站全部无法访问排查记录(PHP-FPM 内存耗尽案例)

一、故障现象

服务器配置:

腾讯云 CVM

2核4G

CentOS 8.5

宝塔面板

PHP 7.2

MySQL

Nginx

故障表现:

网站后台无法访问

宝塔面板无法打开

SSH 无法连接

ping 正常

重启服务器后恢复

典型现象:

网络层正常,但是服务器应用层全部失去响应。

这种情况优先怀疑:

内存耗尽(OOM)

CPU 满载

磁盘 IO 堵塞

连接数耗尽

某个服务异常占满资源

二、排查原因

搜索 OOM
bash 复制代码
grep -Ei "oom|out of memory|killed process" /var/log/messages

说明 Linux 因内存不足杀进程

确认服务器资源情况
bash 复制代码
free -h

查看谁占用内存

bash 复制代码
ps aux --sort=-rss | head -30

能看到很多php-fpm: pool www,总共二十几个,共占用2G多,每个60m~120m不等

而php 配置:

pm.max_children=50,说明有请求还会占用新的内存空间

50*90MB ≈ 4.5G,超过服务器物理内存

检查 PHP-FPM 配置
bash 复制代码
cat /www/server/php/72/etc/php-fpm.conf

pm.max_children = 50

改为

pm.max_children = 20

这样20*90MB ≈ 1.8G,比较安全

查看 PHP 慢请求

可能由于长任务不释放,导致不断启动新php-fpm,导致过多进程占用过多内存,进而溢出,这里开启了php慢日志,超过30秒,会记录

bash 复制代码
cat /www/server/php/72/var/log/slow.log

统计慢请求入口

bash 复制代码
grep "script_filename" /www/server/php/72/var/log/slow.log \
| sort | uniq -c | sort -nr

查看具体文件内容

bash 复制代码
 nl -ba /www/wwwroot/21258_mini/application/api/controller/Base.php | sed -n '35,55p'
修复方案
  1. 调小最大子进程,设置最大请求后重启进程

    bash 复制代码
    vi /www/server/php/72/etc/php-fpm.conf

    pm.max_children = 20

    pm.max_requests = 500

  2. 增加交换空间

    创建2G:

bash 复制代码
dd if=/dev/zero of=/swapfile bs=1M count=2048

chmod 600 /swapfile

mkswap /swapfile

swapon /swapfile

永久启用:

bash 复制代码
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

检查:

bash 复制代码
free -h

总结

业务接口慢请求导致 PHP-FPM 进程堆积,在无 Swap 的4G服务器上触发资源耗尽,最终导致整台服务器不可用
慢请求 → PHP-FPM堆积 → 内存增长 → OOM
相关推荐
郑州光合科技余经理37 分钟前
本地生活服务系统:成品模块和定制接口怎么划界
java·前端·人工智能·后端·系统架构·php·ai编程
2603_9651481141 分钟前
家居百货蓝海:API挖掘高复购率生活小商品
大数据·服务器·人工智能·python·生活
cui_ruicheng4 小时前
LangChain 应用开发(十四):Agent 上下文与记忆机制
服务器·人工智能·python·langchain
LorryJovens7 小时前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php
Brilliantwxx8 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
ai小陈8 小时前
FramePack图生视频云端部署实战:从单图输入到视频输出的完整流程
服务器·人工智能·安全·ai·音视频·gpu算力
欧米欧8 小时前
Linux基础指令上
linux·运维·服务器
Casual9 小时前
【网络基础进阶】:看懂子网划分与 VLAN
开发语言·网络·php
sulikey9 小时前
Linux 粘滞位(Sticky Bit)完全指南:为什么共享目录需要“防删除“?
linux·服务器
mengge.cloud10 小时前
网络技术基础小白教程
linux·服务器·网络·云计算