游戏卡顿白皮书 › L9 服务器游戏进程
服务器崩溃 Server process crash
原因 ID sp-crash · 主责 研发团队·服务器开发 · 配合 运维团队·系统运维
在含图示和实验的完整版中打开此卡片 →
服务器进程因未处理的错误而崩溃时,这台服务器上的所有人会同时掉线。
起因 指向不存在对象的错误(空引用)、错误的数据、内存不足等致命错误 → 结果 服务器(或场景)进程终止 → 画面表现 所有人同时掉线,上次存盘之后的进度可能回档
- 症状
- 掉线, 吞操作/回档
- 因素
- 停顿
- 谁会遇到
- 特定地点/分线, 全服
- 何时出现
- 偶尔随机, 做特定操作时
- 负责方
- 主责 研发团队·服务器开发 · 配合 运维团队·系统运维
- 研发团队要做的事
- 分析崩溃 dump,修复原因;频繁存盘。
- 运维团队要做的事
- 进程自动重启;搭建收集、保存崩溃 dump 的环境;服务器宕机立即告警。
- 监控图上
- 连接成批断开 · 连接数、进程重启次数
- 查看位置
- coredumpctl list 中的 core dump 记录(时间、PID、终止信号),以及服务管理器(systemd)的异常退出、重启记录。Windows 服务器看 WER 留下的 dump 文件
- 确认依据
- 连接数瞬间掉到接近 0 的时刻,有游戏服务器进程的异常退出和 core dump
- 排除依据
- 进程一直活着却掉线,看网络设备或空闲超时。如果是长时间停住后由看门狗重启的记录,看死循环或死锁
- 确认手段
- 运维工具即可确认(无需游戏代码)
出处
- Collecting User-Mode Dumps Microsoft
通过 Windows 错误报告(WER)设置用户模式程序崩溃时把完整 dump 或迷你 dump 收集到本地 - systemd.service(5) — Linux manual page systemd
Restart=on-failure 在异常退出、信号终止(含 core dump)、看门狗超时时自动重启服务,推荐用于长期运行的服务 - coredumpctl(1) — Linux manual page systemd
用 list 查询 systemd-coredump 保存的 core dump,显示崩溃时间、PID、导致崩溃的信号
相关原因
同一层:L9 服务器游戏进程
其他层中同样导致“掉线”的原因
查看含图示和实验的原卡片