web-dev-qa-db-ja.com

httpsとapacheのhttpのパフォーマンスへの影響はどのくらいですか?

同じページのhttpと比較して、httpsのパフォーマンスヒットはおおよそどれくらいかかりますか?私がabc.phpの1000リクエスト/秒を処​​理できると仮定すると、https経由でアクセスした場合、どれだけ減少しますか?これはハードウェア、構成、OSなどに依存している可能性があることはわかっていますが、一般的な経験則/概算を探しています。

50
erotsppa

クイック&ダーティーテスト(つまり、最適化はまったくありません!)のために、ローカルUbuntu 9.04で単純なUbuntu Apache2のデフォルトのWebサイト(「動作する」とだけ表示されます)をhttpとhttps(自己署名証明書)の両方で有効にしましたVMで、Apacheベンチマーク "ab"を実行し、10,000リクエスト(同時実行なし)で実行しました。クライアントとサーバーは同じマシン/ VM上にありました:

httpの結果( "ab -n 10000 http://ubuntu904/index.html ")

  • テストにかかった時間:2.664
  • 1秒あたりのリクエスト数:3753.69(#/秒)
  • リクエストあたりの時間:0.266ms

httpsの結果( "ab -n 10000 https://ubuntu904/index.html "):

  • テストにかかった時間:107.673
  • 1秒あたりのリクエスト数:92.87(#/秒)
  • リクエストあたりの時間:10.767ms

single requestのtcp/ip通信を(tcpdumpやWiresharkなどで)詳細に調べると、httpのケースで必要なことがわかります。クライアントとサーバー間のパケット数は10ですが、httpsには16が必要です。 (レイテンシの重要性についての詳細 ここ

キープアライブの追加(abオプション-k)をテストすると、すべてのリクエストが同じ接続を共有するようになるため、状況が改善されます。つまり、SSLオーバーヘッドは低くなりますが、httpsの測定速度は低下します。

httpの結果とキープアライブ( "ab -k -n 10000 http://ubuntu904/index.html ")

  • テストにかかった時間:1.200
  • 1秒あたりのリクエスト数:8334.86(#/秒)
  • リクエストあたりの時間:0.120ms

httpsの結果とキープアライブ( "ab -k -n 10000 https://ubuntu904/index.html "):

  • テストに要した時間:2.711
  • 1秒あたりのリクエスト数:3688.12(#/秒)
  • リクエストあたりの時間:0.271ms

結論

  • この単純なテストケースでは、httpsはhttpよりもはるかに低速です。
  • HttpsのサポートとベンチマークのWebサイトを有効にして、httpsのオーバーヘッドを支払うかどうかを確認することをお勧めします。
  • Wiresharkを使用して、SSLオーバーヘッドの印象を取得します。
57
knweiss

最近のサーバーでは、ボトルネックは暗号化ではなくネットワークとアプリケーションになると思います。 ApacheのTLS/SSLはかなり最適化されたCで記述されるため、特にデータベースアクセスなどを行う場合は、PHPコードによって小さくなります。静的ファイルの提供は暗号化はプロセス全体の大きな部分となるため、おそらくより大きな影響があります。具体的な数値を示すことはできませんが、5%を超えていて、おそらく数パーセントに近いのではないかと思います。

10
David Pashley

何も想定しないで、自分でテストしてください!もちろん、特定のWebアプリで。

8
SaveTheRbtz

Nginxの2番目の推奨事項。私自身のテストでは、専用のSSLオフローダーとしてうまく機能しました。

1
Chris

最近のハードウェアでは、プロセッサ(計算)にバインドするよりも、特定のトランザクションにI/Oバインドする可能性が高いことがわかりました。これは、圧縮と暗号化について話すときに特に当てはまります。最近の128ビット暗号化は簡単です。私は通常、SSLを使用するよりも送信ページの構築と配信が非常に難しくなり、数年でhttpトラフィックとhttpsトラフィックのパフォーマンスに大きな違いがあることに気づきませんでした。

1
Keith

もちろん、SSL処理が大きな影響を与えた場合は、常にそれをサーバー外の専用ボックスに移動できます。 here を介してnginxでこれを行うことについての素晴らしい記事があります。これは、高負荷のレイヤー7負荷分散サーバーで行ったものです。

0
Coops

私の経験から、一般的なルールは、公開鍵の大きさに直接関係しています(たとえば、2048、4096、8192など)。ただし、デスクトップ環境の違いにはほとんど気づきませんが、モバイルは計算能力を必要とするため、違いを見ることができます。

一般的には残念なことですが、SSLには常に、そしておそらくは常に大きなパフォーマンスの低下が伴います。

0
Areeb Soo Yasir

含まれる他のすべての要素(スクリプト、ネットワークなど)と比較して、暗号化のために追加される負荷が非常に小さいことが確認できます

0
Francesco Abeni