1.
故障接收与信息收集
第一时间确认故障范围与影响:询问玩家人数、时间、具体表现(无法登录/卡场景/掉线/掉帧)。收集服务器ID、节点名称、最近变更(配置/补丁/发布)。立即远程连入运维控制台并保留原始告警截图和用户日志。小分段:可要求玩家提供客户端日志(client_log)和复现步骤。
2.
快速健康检查(5分钟内)
检查主机是否存活:ping 与 ssh;查看进程:ps aux | grep emperor;查看端口:ss -tulpn | grep -E "7000|8000|27017"(根据服务端口调整)。CPU/内存瞬时:top 或 htop;磁盘空间:df -h,inode:df -i;若异常立即snapshot或冻结写入以防数据损坏。小分段:如无法SSH,尝试通过控制台或KVM访问。
3.
日志收集与定位
集中采集:/var/log/emperor/*、游戏服日志、nginx/access.log、backend 日志;用tail -n 200 /path/to/log 观察最近错误。关键字检索:grep -E "ERROR|WARN|Exception|OOM|segfault"。若是崩溃,抓取core文件并用gdb分析:gdb /path/bin/core core - backtrace。小分段:将重要日志压缩并上传到运维共享目录供分析。
4.
数据库与缓存层排查
确认数据库连通性:mysql -u user -p -h dbhost -e "SHOW PROCESSLIST\G";查看慢查询:pt-query-digest 或 SHOW FULL PROCESSLIST,检查锁等待:SHOW ENGINE INNODB STATUS\G。Redis连通:redis-cli -h host ping,查看键空间和慢命令。必要时对热点表做读写分离或短期只读限流。小分段:遇到写入异常优先触发备库切换或降级策略。
5.
网络与延迟诊断
使用ping/traceroute确定丢包或路由问题;用mtr定位丢包节点。抓包定位协议异常:tcpdump -i eth0 host
and port -w dump.pcap,再用Wireshark分析。检查防火墙与限速:iptables -L -n 或 nft list ruleset。若为跨地域问题,联系网络厂商或云厂商排查链路。小分段:短期内可通过CDN或中转节点缓解流量峰值。
6.
服务重启与灰度回滚策略
先做无损重启:优雅下线玩家(广播、保存数据),stop 服务并确认端口释放,再启动:systemctl restart emperor.service 或 ./start.sh。若重启无法解决,回滚到上一个稳定版本:确保已提前备份二进制与数据库快照,按顺序回滚代码->DB变更->配置。小分段:回滚先在预发布环境跑 smoke tests,再逐步流量切换。
7.
内存与GC问题排查(Java/Netty场景)
检查JVM参数与GC日志:-Xms -Xmx -XX:+PrintGCDetails,分析GC频率与Full GC。在线抓取堆信息:jmap -heap ,生成heap dump:jmap -dump:live,format=b,file=heap.hprof ,用jvisualvm或MAT分析内存泄漏对象。短期解决:扩大堆或触发手动GC(慎用),长期修复需代码level处理。小分段:监控GC停顿时间影响到玩家体验,设定报警阈值。
8.
磁盘与IO瓶颈处理
用iostat -x 1 5、iotop查看IO等待高的进程和磁盘。若slow io导致服务卡顿,先迁移热数据到更快磁盘或开启临时读写缓存(注意一致性)。检查日志轮转是否导致磁盘耗尽:logrotate 配置并清理历史日志。小分段:必要时扩容云盘并在线调整文件系统挂载参数(noatime等)。
9.
自动化监控与告警实践
部署Prometheus + Grafana监控:采集CPU/内存/GC/请求QPS/错误率/延迟/DB连接数。配置重要报警:错误率>1%持续5分钟、P95延迟>500ms、磁盘使用>80%。用PagerDuty或钉钉群机器人通知并包含诊断脚本链接。小分段:建立Runbook与自动化脚本(脚本步骤需可复现并带回滚)。
10.
问:遇到“无法登录/认证失败”如何快速定位?
先确认是否单点问题或全服:查看认证服务(auth)进程与端口连通;检查认证数据库/Redis是否可用。查看auth日志关键错误(token过期/签名错误/数据库超时)。若是最近发布引入的配置变更,立即回滚认证相关配置并重启auth服务;必要时切换到备用认证节点。
11.
问:遇到“玩家大范围卡顿/延迟飙升”怎么办?
优先定位是否为网络/IO/CPU瓶颈:查看监控中网络丢包、带宽、磁盘IO和主机负载。若为网络问题,缩减跨区流量或启用临时中转;若为IO或CPU,临时限流非核心功能(聊天、交易),逐步降载并扩容实例。保持透明沟通并给出预计恢复时间。
12.
问:如何做好日常运维与预防措施以减少故障?
建立定期巡检(磁盘、备份完整性、证书过期、日志健康),自动化部署流水线与回滚能力,完善监控与报警、编写Runbook并演练恢复演练(RTO/RPO)。对常见故障建立知识库和常用诊断脚本,做到故障可复现、可回滚、有人响应。定期做容量与压测,提前发现瓶颈。
来源:完美国际帝王服务器常见故障排查流程和运维实践分享