ゲームラグ白書 › L11 ディスク
ディスクフル Disk full
原因ID dk-full · 主担当 インフラチーム・サーバーインフラ · 副担当 インフラチーム・DBインフラ, ゲーム開発チーム・サーバー開発
図と実験のあるメインページでこのカードを開く →
ログとダンプがたまってディスクがいっぱいになると書き込みが失敗し、備えがなければサーバーが落ちます。
なぜ ログ・ダンプ・一時ファイルがたまって100% → すると 書き込み失敗。エラー処理がなければクラッシュ、あれば保存失敗 → 画面では 切断、進行状況のロールバック
- 症状
- 切断, 不発・ロールバック
- 要因
- ストール
- 誰に起きるか
- サーバー全体
- いつ
- 長時間稼働するほど
- 担当
- 主担当 インフラチーム・サーバーインフラ · 副担当 インフラチーム・DBインフラ, ゲーム開発チーム・サーバー開発
- ゲーム開発チームの対応
- 書き込み失敗を処理し、クラッシュさせる代わりに保存の再試行とアラート、不要なログ・ダンプの削減。
- インフラチームの対応
- サーバー機器・OS:ログのローテーション、容量のアラート、ログとデータのディスク分離。DBサーバー:DBのトランザクションログ(WAL、binlog)が、レプリケーションの停止・ログバックアップの漏れでたまっていないか監視。
- グラフでは
- 徐々に上昇 · ディスク使用率
- 確認箇所
- df -hの使用率とdf -iのinode使用率を確認し、サーバー・DBのログからENOSPCエラーを探す。DBは、PostgreSQLのpg_replication_slotsでactiveがfalseのスロット、MySQLのSHOW BINARY LOGSのファイル数・サイズ、SQL Serverのsys.databasesのlog_reuse_wait_desc、RDSはFreeStorageSpaceを確認
- 該当する場合
- 使用率が数日かけて着実に上がって100%に達した時刻と、クラッシュ・保存失敗の時刻が重なり、ログにENOSPCが残る
- 該当しない場合
- 空き容量が十分なのに書き込みが失敗するなら、権限・ファイルサイズ上限など別の原因
- 確認手段
- インフラのツールで確認(ゲームコード不要)
- もっと詳しく
- DBのトランザクションログ(WAL、binlogなど)は、レプリカが止まったりログのバックアップが抜けたりすると、削除されずにたまり続けます。このディスクがいっぱいになるとDBのすべての書き込みが止まり、保存・取引が一斉に失敗します。
出典
- write(2) — Linux manual page Linux man-pages
デバイスに空きがないと、書き込みがENOSPCエラーで失敗 - Monitoring Disk Usage (PostgreSQL Documentation) PostgreSQL
WALディスクがいっぱいになると、DBサーバーがパニックで停止することがある - Log-Shipping Standby Servers (PostgreSQL Documentation) PostgreSQL
レプリケーションスロットはレプリカが受け取るまでWALを削除しないため、pg_walの領域を埋め尽くすことがある(max_slot_wal_keep_sizeで制限) - Troubleshoot a full transaction log (SQL Server Error 9002) Microsoft SQL Server
ログがいっぱいになるとDBは読み取りのみで更新不可、ログバックアップの漏れ・レプリケーション遅延・長いトランザクションがログの再利用を妨げるよくある原因、何が妨げているかはsys.databasesのlog_reuse_wait_descで確認 - df(1) — Linux manual page coreutils
ファイルシステムごとの使用量、-iはブロックの代わりにinodeの使用量 - pg_replication_slots (PostgreSQL Documentation) PostgreSQL
active:現在ストリーミング中のスロットか、wal_status:スロットが保持しているWALがmax_wal_sizeを超えたか - SHOW BINARY LOGS Statement MySQL
サーバーのバイナリログファイルの一覧とファイルサイズ(File_size) - Amazon CloudWatch metrics for Amazon RDS AWS
FreeStorageSpace:DBインスタンスの残りのストレージ容量
あわせて読みたい原因
同じ層:L11 ディスク
同じ症状(切断)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る