全系 400G 单机防火墙 · 独享带宽 · 电信 / 五线 BGP 多机房

游戏开服服务器 CPU 占用 100%?五步定位法(附排查命令)

游戏开服服务器 CPU 100% 五步排查流程图

先分清:CPU 100% 是”被打”还是”自己吃满”

游戏开服服务器最常见的故障现象就是:玩家反馈卡顿、技能放不出来、登录转圈,后台一看 top 里 CPU 长期 100%。这时候先别急着换机器,先判断是被攻击还是程序自身吃满——两者的处理方式完全不同。

第一步:确认是哪个进程在吃 CPU

登录服务器执行:

top -c        # 按 P 排序,看 %CPU 最高的进程
ps aux --sort=-%cpu | head -10

常见结果只有三类:

  • mysqld:数据库慢查询、缺索引、全表扫描
  • 游戏服务端进程:脚本死循环、地图刷新过多、怪物 AI 计算过密
  • php-fpm / nginx:官网或论坛被 CC 刷接口

第二步:看负载与磁盘 IO

uptime        # load average 是否远大于核数
iostat -x 1   # %util 接近 100% 说明磁盘是瓶颈

如果 CPU 不高但玩家依然卡,问题往往在磁盘 IO:日志狂写、数据库随机读、备份任务同时跑,都会让游戏线程阻塞。

第三步:看连接数是否异常

ss -s                 # 总连接数
ss -ant | awk '{print $1}' | sort | uniq -c

大量 SYN_RECV 说明可能在被 SYN Flood;大量 ESTABLISHED 且来自少量 IP,多半是 CC 或连接耗尽攻击。这一步是判断”要不要上高防服务器“的关键。

第四步:看带宽有没有被打满

iftop -n -P     # 实时看流量来源
vnstat -l       # 看带宽是否持续跑满

带宽被打满而 CPU 空闲,是典型的流量型 DDoS;这类攻击靠优化程序没用,必须走清洗。

第五步:排查程序侧的高消耗逻辑

  • 数据库慢查询日志里 TOP 10 语句,补索引或改写
  • 定时任务是否在高峰期跑(备份、统计、清理)
  • 玩家数上涨后,单机承载是否已到上限(分线、分服)

常见原因与处理建议

现象 常见原因 处理方式
mysqld 吃满 CPU 慢查询、缺索引 加索引、拆表、读写分离
带宽跑满、CPU 空闲 流量型 DDoS 接入高防 IP 或高防服务器
大量 SYN_RECV SYN Flood 清洗 + 源认证
php-fpm 飙升 官网被 CC 限速 + 人机校验
IO 长期 100% 日志/备份/随机读 分离存储、错峰任务

什么时候该换方案

如果排查后确认是攻击导致的卡顿,优化代码能起的作用有限,建议直接上高防服务器:单机 400G 硬件防火墙、独享带宽、BGP 多线,攻击期间玩家不掉线。我们的套餐覆盖山东、襄阳、扬州、台州、镇江等机房,价格见套餐价格,也可以联系我们说明现象,帮您判断是程序问题还是攻击。

需要高防服务器或定制防护方案?

400G 单机防火墙 · 独享带宽 · 7×24 技术响应,微信 / QQ 直接联系。