非同期アプローチで boost::asio を使用して TCP ネットワーク アプリケーションを開発しました。アプリケーションは、次の方法で約 1 GB のデータを送信します。
- 5 バイトのコマンドを送信する (async_write() を使用)
- 1024 バイトのデータを送信する (別の async_write() を使用)
- 1GBのデータがすべて送信されるまで繰り返します
同期アプローチを使用すると、パフォーマンスは期待どおり (1Gb イーサネットを使用して 1GB のデータを送信するのに約 9 秒) ですが、非同期呼び出しを使用するとパフォーマンスが低下し、同じ量のデータを送信するのに 20 秒かかります。
Nagle のアルゴリズムを無効にしようとしましたが、問題は解決しません。
少量のデータで複数の async_write() 呼び出しを使用すると、パフォーマンスに悪影響を及ぼす可能性があるかどうか知っていますか?
ありがとう!