1.
准备与环境确认
- 检查操作系统与云主机规格:执行 uname -a、lsb_release -a、lscpu、free -h、lsblk 查看基本信息。
- 确认网络出口与防火墙:使用 ip a、ss -tunlp、iptables -L/ufw status,确保监控端口(9090/9100/3000)可达。
- 建议在台湾节点先做一次压力基线:使用 stress-ng --cpu 4 --io 2 --vm 1 --timeout 60s 得到基线数据。
2.
部署基础监控(Prometheus + node_exporter)
- 安装 node_exporter:wget https://... && tar xvf && ./node_exporter &,默认 9100 端口。
- 在 Prometheus 抓取:在 prometheus.yml 中加入 job_name: 'taiwan-servers' targets: ['IP:9100'],重启 Prometheus。
- 建议同时部署 cadvisor(容器),blackbox_exporter(网络测试)和 alertmanager,方便后续细化告警。
3.
关键监控指标与命令对应
- CPU:查看 loadavg(cat /proc/loadavg),top/htop,mpstat -P ALL 1;关注 steal、iowait、user、system 占比。
- 内存:free -m、vmstat 1、smem;注意 swap 使用率和 OOM 触发情况。
- 磁盘 IO:iostat -xz 1、iotop -o、dstat --disk;关注 await、svctm、util (>80%)。
- 网络:ss -s、iftop -i eth0、nethogs、ip -s link;关注 retrans、drops、tx_queue_len 与链路抖动。
4.
实时诊断步骤(发生性能问题时)
- 第一步:快速确认影响范围:查询业务日志、玩家连接数(游戏服统计端点)与连接异常比率。
- 第二步:对照指标趋势:打开 Grafana 时间序列,选取问题发生前后 15 分钟,查看 CPU/iowait、disk_util、net_errors。
- 第三步:落地命令核实:远程执行 top、iostat、ss、tcpdump(示例:tcpdump -i eth0 port 3000 -w /tmp/game.pcap)收集证据。
5.
定位常见瓶颈与处理建议
- CPU 瓶颈:若 user 高且 loadavg > CPU 核数,检查热点线程(ps -eo pid,cmd,%cpu --sort=-%cpu | head),考虑调优线程池、开启 cpu pinning 或扩大 vCPU。
- 内存/Swap:若 swap 频繁,检查内存泄漏(pmap/PSS),调整 JVM 参数或释放缓存;短期可增加 swap 或重启服务。
- 磁盘 IO:若 await 高、util 接近 100%,排查大量小文件或日志写入,考虑切换更高 IOPS 云盘(如 NVMe),或加写入队列/异步化。
- 网络延迟/丢包:使用 mtr -r -c 100 目标IP 确认路由,使用 iperf3 测试吞吐,若链路问题联系机房或云提供商。
6.
抓包与深度分析实操
- 抓包:tcpdump -i eth0 port 端口 -s 0 -w /tmp/capture.pcap,抓取问题时间窗口,避免长期抓包导致磁盘满。
- 分析:用 Wireshark 或 tshark 分析 RTT、重传、窗口缩小(Window size)、TCP reset。查找大量重传或 SYN flood 的证据。
- eBPF/性能工具:使用 perf top/record、bcc 工具(execsnoop、tcplife)定位内核层面热点与系统调用阻塞。
7.
建立告警与自动化响应
- Prometheus 告警示例:cpu:rate > 0.85 for 5m,disk_util > 0.9 for 3m,packet_loss > 2% for 2m。
- 自动响应:结合 Alertmanager + webhook 调用自动脚本(滚动重启、扩容脚本、切流)并通知 Slack/钉钉。
- 定期演练:每月演练一次故障恢复流程(开关流量、扩容节点、回滚配置)。
8.
性能优化实战案例(快速定位到解决)
- 案例:玩家延迟增加 200ms,Grafana 显示 net_errors 与 retransions 激增。操作:1) 抓包确认链路丢包;2) mtr 确认到骨干路由的丢包在云出口;3) 切换到备用出口并提交工单给云商;4) 延迟恢复并在游戏服侧增加重连策略与延迟退避。
9.
维护与长期策略
- 指标库:至少保存 90 天的监控数据用于回溯,关键事件保存完整抓包与快照。
- 容灾:在不同台湾可用区或邻近地区部署多活节点,使用智能调度减少单点影响。
- 优化计划:定期分析热点(Top N queries、慢函数),对代码与中间件进行性能测试与回归。
10.
问:在台湾云主机上如何快速判断是 CPU 还是 IO 瓶颈?
- 答:先看 loadavg 与 iowait。若 loadavg 高但 iowait 也高,怀疑 IO 瓶颈,使用 iostat -xz 1 查看 await 与 util;若 iowait 低但 user/system 高,则为 CPU 瓶颈,用 top/htop 或 perf 找出耗时线程。
11.
问:如何在高并发下诊断网络丢包与延迟问题?
- 答:同时使用 mtr(路由+丢包)、tcpdump 抓包确认重传与重设、iperf3 做吞吐基线,对比不同时间窗口与不同目标,若只在云出口丢包则联系云厂商处理。
12.
问:Prometheus+Grafana 的告警阈值怎么设更合理?
- 答:先基线化(压力测试下记录指标),把阈值设为基线的 1.5~2 倍并加上持续时间(for),如 cpu_usage > 85% for 5m,再结合业务影响度分级告警(P1/P2/P3)。
来源:台湾服务器游戏云主机监控指标与性能瓶颈诊断实操指南