Linux プラットフォームでブロッキング BOOST ASIO ソケットを使用しています。一部の read() 操作で、500 ミリ秒以上の大幅な遅延が発生します。(ほとんどの場合、レイテンシーは良好ですが、1 回限りのこのような巨大なレイテンシーは受け入れられません)
オプションを使用して Nagle のアルゴリズムを無効にしました
_socket->set_option( tcp::no_delay( true) );
インターネットで検索してみましたが、Delayed Ack や PUSH フラグなど、この遅延を確実に解消できるものがあるようです。
Linux を使用していますが、PUSH フラグの設定はおそらく Linux では使用できません。BOOST の Delayed Ack の設定がわからない。(boost ソケットから抽出したネイティブ ソケット記述子を使用する必要がありますか?)
この質問を締めくくると、遅延は受信側からのものでした。クライアントとサーバーの間で実装されている基本的なプロトコルは、受信者が送信者にさらにパケットを送信するためのフラグを与えないようになっています。TCP レベルでは何もありません。アプリケーションレベルの実装は悪いです。