ゲームラグ白書 › L11 ディスク
コアダンプの書き出し Core dump writing
原因ID dk-coredump · 主担当 インフラチーム・サーバーインフラ · 副担当 ゲーム開発チーム・サーバー開発
図と実験のあるメインページでこのカードを開く →
サーバーが落ちるときに数GBのメモリをディスクに書き出すため、再起動が数分遅れることもあります。
なぜ サーバーのクラッシュでメモリ全体をファイルに書き出す → すると 数GBを書き込む間は再起動できない → 画面では サーバーが落ちて切断された後、しばらく接続できない
- 症状
- 接続不可・無限ロード
- 要因
- ストール
- 誰に起きるか
- サーバー全体
- いつ
- ときどきランダムに
- 担当
- 主担当 インフラチーム・サーバーインフラ · 副担当 ゲーム開発チーム・サーバー開発
- ゲーム開発チームの対応
- 必要なメモリだけを含む小さなダンプ(ミニダンプ)方式の検討、クラッシュ原因の修正。
- インフラチームの対応
- ダンプサイズの制限(OSのコアダンプ設定)、高速なディスク、再起動とダンプの分離(ダンプの圧縮・アップロードは再起動後に別途処理)。
- グラフでは
- 接続が一斉に切れる · 接続数、サーバーの再起動時刻
- 確認箇所
- クラッシュ時刻とコアファイルのサイズ(coredumpctl list・info、またはcore_patternが指す場所のファイル)、ファイルの書き込みが終わった時刻、サービスが再び立ち上がった時刻を並べ、その間のiostat -xのwkB/sを確認
- 該当する場合
- クラッシュ後、数GBのコアファイルを書き込む間ディスク書き込みが上限近くに張り付き、書き出しが終わってから再起動が始まる
- 該当しない場合
- コアダンプが無効か小さく済んだのに再起動が遅いなら、マップのロードやDBのコールドキャッシュ(db-cold-cache)など、サーバーの起動処理側
- 確認手段
- インフラのツールで確認(ゲームコード不要)
出典
- core(5) — Linux manual page Linux man-pages
RLIMIT_COREでコアファイルサイズの上限、coredump_filterで含めるメモリ領域を選択、コアダンプをプログラムにパイプして別途処理 - Minidump Files Microsoft
ミニダンプはクラッシュダンプ情報のうち有用な一部だけを含み、速く小さく作れる - coredumpctl(1) — Linux manual page systemd
list:ジャーナルに残ったコアダンプの一覧(TIMEはカーネルが通知したクラッシュ時刻)、info:ダンプごとの詳細とディスクに書いたサイズ - iostat(1) — Linux manual page sysstat
-x:wkB/s(1秒あたりのディスク書き込み量)
あわせて読みたい原因
同じ層:L11 ディスク
同じ症状(接続不可・無限ロード)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る