遊戲 Lag 白皮書 › L9 伺服器遊戲程式
伺服器當機 Server process crash
原因 ID sp-crash · 主要負責 遊戲開發團隊(伺服器開發) · 協同 基礎設施團隊(伺服器基礎設施)
在含圖解與實驗的完整版中開啟卡片 →
伺服器處理程序因未處理的錯誤而終止時,該伺服器上所有人會同時斷線。
為什麼 指向不存在對象的錯誤(null 參照)、錯誤的資料、記憶體不足等致命錯誤 → 於是 伺服器(或 zone)處理程序結束 → 畫面上 所有人同時斷線,上次存檔後的進度可能回檔
- 症狀
- 斷線, 吃指令/回檔
- 因素
- 停滯
- 誰會遇到
- 特定地點/頻道, 整個伺服器
- 何時
- 偶爾隨機發生, 做特定動作時
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發) · 協同 基礎設施團隊(伺服器基礎設施)
- 遊戲開發團隊要做的事
- 分析 crash dump 並修正原因、提高存檔頻率。
- 基礎設施團隊要做的事
- 處理程序自動重新啟動、建置 crash dump 的收集與保存環境、伺服器停機時立即警示。
- 圖表上
- 連線同時大量中斷 · 連線數、處理程序重新啟動次數
- 查看位置
- coredumpctl list 的 core dump 紀錄(時間、PID、終止訊號)與服務管理器(systemd)的異常結束、重新啟動紀錄。Windows 伺服器則看 WER 留下的 dump 檔案
- 符合的跡象
- 連線數瞬間掉到接近 0 的時間點,遊戲伺服器處理程序有異常結束與 core dump
- 不符合的跡象
- 處理程序一直存活、連線卻中斷時,是網路設備或閒置逾時。若是長時間停住後由看門狗重新啟動的紀錄,是無窮迴圈或死結
- 確認方式
- 用基礎設施工具確認(不需要遊戲程式碼)
出處
- Collecting User-Mode Dumps Microsoft
設定 Windows 錯誤報告(WER),在使用者模式程式當機時於本機收集完整或迷你 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 伺服器遊戲程式
同一症狀(斷線)在其他層的原因
查看含圖解與實驗的完整版卡片