6

プロキシ サーバーで SSL を有効にしたところ、パフォーマンスが毎秒約 17,000 リクエストから毎秒 5,000 リクエストに低下したことがわかりました。私は Netty の安全なチャットの例のコードに従いましたが、何か違うことをしたとは思いません。

プロキシで間違いを犯したかどうかを確認するために、ダミーサーバーを作成しました。通常の http モードでダミー SSL サーバーを実行すると、1 秒あたり約 50k のリクエストが可能です。ダミー サーバーで SSL を有効にすると、1 秒あたり 28,000 リクエストに低下します。

私が間違っていることはありますか?足りないものはありますか?

私はJDK 6を使用してコードをコンパイルし、JDK 7u4で実行しています。Netty-3.5.0 も使用しています。zeusbench を使用してテストを実行しています。テスト パラメータは次のとおりです。 zeusbench -n 10000 -c 100 -k -C RC4_SHA "https:///"

ソース: http://pastebin.com/iahqr3zT

編集 1: JProfiler を介してダミー サーバーを実行しました。パイプライン ファクトリでの SSLContext.createSSLEngine 呼び出しには、(平均で) 55,005 マイクロ秒かかります (この平均は、メソッドの 540 回の呼び出しから計算されています)。

channelConnected での SslHandler.handshake 呼び出しには、(平均で) 46,284 マイクロ秒かかります (この平均は、メソッドの 540 回の呼び出しから計算されています)。

createSSLEngine の呼び出しに関して Netty ができることはあまりないことは理解していますが、SslHandler.handshake をもっとうまく調整できますか? エンジン自体の生成とほぼ同じくらいの時間がかかります。

4

2 に答える 2

0

Java を使用した暗号化/復号化は非常に遅いです。
パフォーマンスのために Java を使用した SSL 実装を使用しないでください。
SSL 接続で Java を回避するには、いくつかの方法があります。

  1. Java サーバーの前で SSL 接続を提供するプロキシ サーバーを構成する
  2. openssl を使用して ssl ハンドシェイク ライブラリを実装する jni による netty コードでライブラリを使用する
于 2012-06-06T15:47:32.117 に答える