Apacheの場合、httpsとhttpのパフォーマンスの違いはどれくらいですか?


50

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


2
これに対する受け入れられた答えを見るのは良いことです。
-Hyppy

回答:


57

クイック&ダーティテスト(つまり、最適化なし)のために、ローカルのUbuntu 9.04 VMでhttpとhttps(自己署名証明書)の両方を使用して単純なUbuntu apache2デフォルトWebサイト(「It works!」と表示)を有効にし、Apacheを実行しましたab10,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

単一のリクエストの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オーバーヘッドの印象を取得します。

1
+1すてきな仕事があります。数字を投稿してくれてありがとう。
MN

そのマシンのハードウェアに関する仕様を入手できますか?暗号化は、プロセッサの処理能力に大きく依存しています。
マットシモンズ

1
私は最近、VPSで多くのテストを行いましたが、パフォーマンスに影響を与えた最大のものは、使用されている暗号です。暗号を128ビットに制限すると、1秒あたり約500〜600のリクエストを取得できるはずです。1秒あたり100未満の要求にドロップされる256ビット暗号を使用します。自分でテストを行ったとき、1秒あたり30リクエストだったと思います。明らかに、実際の数値はマシンによって異なります。
kovert 09

Matt Simmons、私は2コアの64ビットUbuntu 9.04 VM(VMware Fusion)を、2つのクアッドコア2.8 GHz Intel Xeon CPUを搭載した初期の2008 Mac Proで実行しました。
knweiss

あなたの回答により、20秒以内に終了する質問を投稿できませんでした。ありがとう!
MonkeyZeus 14

10

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


2
デビッドは正しいです、それはあなたが持っているコンテンツの種類に依存します。良い方法は、Apacheベンチでベンチマークすることですhttpd.apache.org/docs/2.2/programs/ab.html
半径

暗号化速度とは別に、SSLハンドシェイクについてはどうでしょうか。サーバーのパフォーマンスとスループットに影響はありますか?
erotsppa 09

SSLハンドシェイクは、接続の前面にいくつかのパケットを追加します。この影響は、サーバーとクライアント間の接続の遅延に大きく依存します。HTTPキープアライブは、このハンドシェイクの影響を軽減します。
デビッドパシュリー


1

最近のハードウェアでは、プロセッサ(計算)バウンドよりも特定のトランザクションのI / Oバウンドになりやすいことがわかりました。これは、圧縮と暗号化について話すときに特に当てはまります。最近では128ビット暗号化はささいなことです-一般に、SSLを使用するよりも発信ページの構築と配信がはるかに難しくなり、数年でhttpとhttpsトラフィックのパフォーマンスに大きな違いが見られません。


1

次に、nginxの推奨事項を説明します。私自身のテストでは、専用のSSLオフローダーとして十分に耐えました。


0

もちろん、SSL処理がハードヒットした場合、いつでもサーバーから専用ボックスに移動できます。ここに nginxでこれを行うことについての素晴らしい記事があります。これは、負荷の高いレイヤー7負荷分散サーバーで行ったことです。


0

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


0

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

一般的には残念ですが、SSLには常に大きなパフォーマンスペナルティがかかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.