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

遊戲 Lag 白皮書 › L11 磁碟

寫入 core dump Core dump writing

原因 ID dk-coredump · 主要負責 基礎設施團隊(伺服器基礎設施) · 協同 遊戲開發團隊(伺服器開發)

在含圖解與實驗的完整版中開啟卡片 →

伺服器當機時要把數 GB 的記憶體寫入磁碟,有時會讓重新啟動延後好幾分鐘。

為什麼 伺服器當機,把整個記憶體寫成檔案 → 於是 寫入數 GB 的期間無法重新啟動 → 畫面上 伺服器當機造成斷線後,很長一段時間連不上

症狀
連不上/無限讀取
因素
停滯
誰會遇到
整個伺服器
何時
偶爾隨機發生
負責單位
主要負責 基礎設施團隊(伺服器基礎設施) · 協同 遊戲開發團隊(伺服器開發)
遊戲開發團隊要做的事
評估改用只包含必要記憶體的小型 dump(minidump),並修正當機原因。
基礎設施團隊要做的事
限制 dump 大小(OS 的 core dump 設定)、使用快速的磁碟、讓重新啟動與 dump 分開(dump 的壓縮、上傳在重新啟動後另外處理)。
圖表上
連線同時大量中斷 · 連線數、伺服器重新啟動時間
查看位置
把當機時間、core 檔大小(coredumpctl list、info,或 core_pattern 指向位置的檔案)、檔案寫完的時間、服務重新啟動的時間並排對照,並看這段期間 iostat -x 的 wkB/s
符合的跡象
當機後寫入數 GB 的 core 檔期間,磁碟寫入一直貼近上限,寫完之後才開始重新啟動
不符合的跡象
core dump 已關閉或檔案很小,重新啟動卻仍然很慢時,是地圖載入、DB 冷快取(db-cold-cache)等伺服器啟動過程的問題
確認方式
用基礎設施工具確認(不需要遊戲程式碼)

出處

  1. core(5) — Linux manual page Linux man-pages
    用 RLIMIT_CORE 設定 core 檔大小上限,用 coredump_filter 選擇要包含的記憶體區域,也可以把 core dump 用管線(pipe)交給程式另外處理
  2. Minidump Files Microsoft
    minidump 只包含當機 dump 資訊中有用的部分,因此產生得快、檔案也小
  3. coredumpctl(1) — Linux manual page systemd
    list:journal 中留下的 core dump 清單(TIME 為 kernel 回報的當機時間);info:各 dump 的詳細資訊與寫入磁碟的大小
  4. iostat(1) — Linux manual page sysstat
    -x:wkB/s(每秒磁碟寫入量)

相關原因

同一層:L11 磁碟

同一症狀(連不上/無限讀取)在其他層的原因

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