ゲームラグ白書 › L6 サーバーのネットワークカード
NICドライバー・ファームウェアの問題 NIC hang / reset
原因ID nic-reset · 主担当 インフラチーム・サーバーインフラ
図と実験のあるメインページでこのカードを開く →
ドライバーのバグや機能の誤動作でカードが止まり、再起動している間はすべての送受信が途切れます。
なぜ ドライバーのバグ、オフロード機能の誤動作 → すると NICが止まって再起動(数秒) → 画面では そのサーバーの全員が一緒にフリーズした後、ワープするか切断
- 症状
- フリーズ, 切断
- 要因
- パケットロス
- 誰に起きるか
- サーバー全体
- いつ
- ときどきランダムに, 長時間稼働するほど
- 担当
- 主担当 インフラチーム・サーバーインフラ
- インフラチームの対応
- カーネルログの「transmit queue … timed out」「Link is Down」の記録を確認・アラート、ドライバー・ファームウェアの更新、問題のある機能(オフロードなど)を無効化。
- グラフでは
- 途切れた後にまとめて到着 · サーバーの送受信パケット数
- 確認箇所
- dmesgでカーネルログから「NETDEV WATCHDOG … transmit queue N timed out」、ドライバーのリセット、「Link is Down」「Link is Up」の記録を探し、その時刻のサーバーの送受信パケット数を確認
- 該当する場合
- 止まった時刻のカーネルログに送信キューのタイムアウトやリンクのダウン・アップの記録があり、その数秒間は送受信パケット数が0
- 該当しない場合
- カーネルログがきれいで、スイッチ側のポートも正常なら、ゲームサーバープロセスの停止(「サーバーGCの全停止」「デッドロック」)か「ネットワーク機器のフェイルオーバー」
- 確認手段
- インフラのツールで確認(ゲームコード不要)
出典
- net/sched/sch_generic.c (Linux v6.12) Linux kernel
送信キューが止まると、カーネルのウォッチドッグが「NETDEV WATCHDOG … transmit queue N timed out」を記録し、ドライバーのリセット関数を呼ぶ - drivers/net/ethernet/intel/ixgbe/ixgbe_main.c (Linux v6.12) Linux kernel
ixgbeドライバーが送信停止時にアダプターをリセットし、リンクが切れると「NIC Link is Down」を記録 - ethtool(8) — Linux manual page ethtool
ethtool -Kでオフロード機能を1つずつ無効にするオプション
あわせて読みたい原因
同じ層:L6 サーバーのネットワークカード
同じ症状(フリーズ)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る