한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

遊戲 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
不符合的跡象
處理程序一直存活、連線卻中斷時,是網路設備或閒置逾時。若是長時間停住後由看門狗重新啟動的紀錄,是無窮迴圈或死結
確認方式
用基礎設施工具確認(不需要遊戲程式碼)

出處

  1. Collecting User-Mode Dumps Microsoft
    設定 Windows 錯誤報告(WER),在使用者模式程式當機時於本機收集完整或迷你 dump
  2. systemd.service(5) — Linux manual page systemd
    Restart=on-failure 會在異常結束、因訊號終止(包含 core dump)、看門狗逾時時自動重新啟動服務,建議用於長時間執行的服務
  3. coredumpctl(1) — Linux manual page systemd
    以 list 查詢 systemd-coredump 儲存的 core dump,顯示當機時間、PID 與造成當機的訊號

相關原因

同一層:L9 伺服器遊戲程式

同一症狀(斷線)在其他層的原因

查看含圖解與實驗的完整版卡片