netty 4.0 (Alpha 8) でプロキシを開発しています。すべて順調です。現在、レイテンシーを最適化する必要があります。事実上、約 4000 バイトの文字列を NY からロンドンに送信しています。区切りフレーム デコーダーを介して JZlib エンコーダーを使用してペイロードを圧縮します。
私は独自のツールと比較してそれを行っているので、ベンチマークがあります。現在、サードパーティのインターフェイスから netty チャネルに配置するまで測定しています。このプロセスは、クライアント/サーバーの両側でサブミリ秒から 3 ~ 5 ミリ秒の範囲です。サーバーでは、メッセージを受信してからサードパーティのインターフェイスに送信するまでの時間を使用します。
伝送時間の範囲は 200 ~ 500 ミリ秒で、外れ値は 100 ミリ秒未満、1 秒、2 秒の範囲です。
クライアントからサーバーへの永続的な接続が 1 つしかないため、現時点では oio を使用しています。遅延のない tcp を使用しています。トラフィックが多いため、marketdata 情報を送信しています。
現時点では、アプリのリモート プロファイリングを続行し、gcc のログを取得し、ローカルまたはサーバーでパッケージをスニッフィングして、サードパーティのトラフィックを netty で現在生成しているトラフィックと比較したいと考えています。
私の質問:
- netty を使用するコンポーネントで使用される時間を測定するために使用できる netty の最も外側のポイントは何ですか? クライアントとサーバーの場合、それは channel.write と messageReceived ですか?
- このシナリオでは、パフォーマンスを改善するために他にどのチャネル オプションを試す必要がありますか?
- Wireshark を使用すると、どのパッケージ プロパティを探すべきかについてアドバイスを受けることができます (これは一般的な質問であり、最初にパッケージを比較します)。
- netty で提供されている他のコールバックまたは診断ヘルプを使用する必要がありますか?
アドバイスありがとうございます。
私はそれを解決することができ、結果は素晴らしいものでした。一部の記事では、接続数が少ない場合は oio を使用するようにアドバイスされていましたが、nio に切り替えた結果、ほとんどすべての送信で 100 ミリ秒未満の送信結果が得られました。