LinuCレベル3 プラットフォームスペシャリスト プラットフォームの最適化 問10
プラットフォームの最適化/カーネルパラメータによるネットワーク最適化HTTP/2で長時間維持しているTCP接続において、数秒間送信が途絶えた後に大きな応答を返すと、そのたびに送信速度の立ち上がりが遅くなる。この現象の改善に効果があるカーネルパラメータの設定として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「プラットフォームの最適化」に対応。実際の試験問題ではありません)
- Anet.ipv4.tcp_slow_start_after_idle = 0
- Bnet.ipv4.tcp_keepalive_time = 600
- Cnet.core.netdev_max_backlog = 16384
- Dnet.ipv4.tcp_max_syn_backlog = 8192
正解:A
解説
net.ipv4.tcp_slow_start_after_idleが既定値の1のとき、接続が一定時間(再送タイムアウト程度)アイドルになると輻輳ウィンドウがリセットされ、次の送信はスロースタートからやり直しになります。長時間維持する接続で間欠的に大きなデータを送る場合、これが送信速度の立ち上がりの遅さとして現れます。0にするとアイドル後も輻輳ウィンドウが維持され、再開直後から以前の速度で送信できます。ただし、アイドル中にネットワークの状況が変わっていると一時的に輻輳を起こす可能性がある点は理解しておく必要があります。
選択肢ごとの解説
- A正しい。0にするとアイドル後に輻輳ウィンドウがリセットされなくなり、送信再開時のスロースタートを避けられます。
- B誤り。tcp_keepalive_timeは、アイドルな接続へ最初のキープアライブプローブを送るまでの時間で、送信速度の立ち上がりには関係しません。
- C誤り。netdev_max_backlogは、NICから受け取ったパケットをカーネルが処理するまで溜めておく受信キューの長さで、送信側の輻輳制御には関係しません。
- D誤り。tcp_max_syn_backlogは、3ウェイハンドシェイクが完了していない接続要求を保持するキューの長さで、確立済み接続の送信速度には影響しません。