低レベルでのネットワーク最適化
Socket Options That Matter - Go Optimization Guide
TCP_NODELAYなどを代表に
Nagleアルゴリズムは、遅延と効率性のトレードオフを実現するため、少量のデータパケットを送信するか、確認応答を受信するまで待機させます。この遅延は大量データの転送には適していますが、高速で小さなメッセージを必要とする用途では問題となります。TCP_NODELAYを設定することでこの遅延機能を無効にし、データが即座に送信されるようになります。これは、ゲーム、金融取引、リアルタイム動画ストリーミング、その他のインタラクティブシステムなど、遅延が許されないワークロードにおいて極めて重要です。
必ずTCP_NODELAYだ。毎度毎度、うんざり。
Nagleアルゴリズムは応答ACKを受信するまでデータの送信をブロックするが、遅延ACKは応答の準備ができるまでACKを遅らせる。パケットを最大に保つには最適だが、レイテンシの影響を受けやすいパイプライン・アプリケーションにはあまり適していない。
https://pkg.go.dev/net#TCPConn.SetNoDelay
code:setnodelay.go
func SetTCPNoDelay(conn *net.TCPConn) error {
return conn.SetNoDelay(true)
}
Go言語で syscall から扱えるようなソケットオプションなどについて触れている
低レベルなネットワークレイヤーで問題を解決したい場合に参考になりそう