ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ネットワーク&セキュリティコミュのSSL処理数について

  • mixiチェック
  • このエントリーをはてなブックマークに追加
最起のPCサーバー程度のスペックにおいて、1秒間に処理できるSSLのハンドシェイクって何セッションくらいできますか?

最近のPCのスペックを例えば
例 Core2Duo 2.66GHzやCore2Quad 2.66GHz
 メモリ1GB
 HDD 160GB
 OS CentOS

くらいのものだとして、こいつにApache+mod_sslのhttps構築したら、1秒間にどれくらいのセッションこなせますか?

10年近く前のPentium200MHz時代だと、SSLって1秒間に1〜せいぜい5セッションしかできなかった記憶があるもので。
今のスペックくらいだと毎秒50〜100セッションくらいいくのでしょうか?


今のCPUはコア単体でも、200MHz→2.66GHzの性能差とPentiumアーキテクチャとCore2アーキテクチャの性能差を考えると、20倍くらいの性能差があり、さらにコア数でその2倍または4倍の能力がありそうですが、当時は公開鍵暗号RSAまたはDHの512bitだったのが、今では1024bitまたは2048bitあたりを使っていますので単純に比例するわけではなさそうです。
(共通鍵暗号はDES→トリプルDESやAESなど)

下記のURLを見るとえらい処理能力が高いですが、Apache+Mod_SSLはここまでの性能はでないだろうとは思います。
http://fenics.fujitsu.com/products/ipcom/catalog/data/ssl/
http://primeserver.fujitsu.com/primepower/products/lineup/pp250/

誰かご存知でしたら教えてください。
よろしくお願いします。

コメント(16)

どうしてしりたいのかわかりませんが、実際に測定するとかは不可能なんですか?
#企業で導入とかなら評価機を借りることができたりしませんか?
トピ主さんの質問、僕も知りたいです。
測定云々のレベルではなく、一般的に、この位のマシンでApache+Mod_SSLだと、だーいたい、この位!みたいな感じのことを。
ひとつ言えるのは、メモリがぜんぜん足りないよ。
そう言う測定ソフトなんぞ
幾らでもあるだろうに・・・・・・
http://neta.ywcafe.net/000636.html
もししらべることがあるならPCIカードも比較していただきたいですなぁ。
Xeon E3110 3.00GHz Dual CPU
MEM 8Gbyte
OS CentOS 5.1(32bit)
Apache/2.2.3(worker)+mod_ssl
公開鍵暗号 DH 2048bit

なんちゃってチューニングレベルで 4,500TPS程度でした。
リバースプロキシ的に使う前提で考えていましたので他の余計な物は極力動かしませんでした。
おそらく、きちんと最適なチューニングしながら最適な設定をすればもっといけるとは思います。

200MHzとはいえハンドシェイクだけで1〜5って少ない気がするんですが
そんなもんですかね?

まぁ10年前だとクライアントの帯域も違いますからそんなもんなのかな。
トランザクションが1〜5ならトランザクションあたりの通信量に依存するでしょうからわかりますが。


いぬのきもちさんのようにベンチとれる方が貼っていただけると参考になりますね
皆さんありがとうございます。
質問の意図というか目的は、どの程度の同時アクセス以上でSSLアクセラレータ導入を考慮するべきかの境界を知りたいためです。

測定をしたいのはやまやまですが、評価する対象の機器がありません。
ようは、サーバーのスペックアップで性能が足りるなら、そちらで考える方がコスト的に安くあがるはずなので。
それでも足りないときにSSLアクセラレータや負荷分散システムと考えるべきでしょうから。


ところで、メモリが足りないよとのご指摘がありますが、どういう観点からメモリが足りないということなのか、具体的にご教示願えませんか?SSLのセッション1つの処理でこれくらいメモリを消費するとか・・・・ちなみに当たり前だと思うのですが、もし本番で使うなら、そのサーバーでは、Xサーバーなどの窓システムは立ち上げませんよ?

それと評価ツールは山ほどあるとのことですが、確かに調べれば多数出てきます。ただ、このような質問の回答としてご回答いただけるのであれば、それで終わりにするのではなく、具体的にツール名及びそれらへのリンク先や、キーワードをこれで検索すると結構いいものがあるよとかまで書いていただければありがたく思います。
ツールで使うのであれば無料が希望ではありますが。


7:いぬのきもちさん
ありがとうございます。そこまでの性能出るならSSLアクセラレータなんぞほとんどいらないというくらいの性能が出てますね。。。SSLアクセラレータだって、中堅どころの性能で2000程度だったと思いましたが・・・・低スペックだと1000すら行かなかったとも思います。
SSLアクセラレータの導入目的は性能アップだけというわけではないですが。

ところで疑問なのですが、CentOSの32bit版にメモリ8GBつんで認識できるのですか?

9:かんすけさん
ありがとうございます。共通鍵暗号の通信だけであれば、あまり負荷はかからないと思ったのですが・・・確かに一番重いSSLハンドシェイクはセッション生成のときだけですからね・・・・でも共通鍵暗号も重いのは、鍵拡大処理であとはほとんど重くなかったと思います。とはいえ、いまのCPUで1コアあたりでは150〜200Mbpsくらいのスループットだろうなとは思います。異なるセッションの同時の処理はもう少し下がるでしょうけど、鍵拡大の処理さえ終わり、それらの情報がキャッシュから追い出されずに残るサイズであれば、そんなに処理は落ちないはずです。キャッシュに残らないときは性能はがた落ちですが。

むかし、Pen3、500MHzのときにAESのライブラリを作ったときに30(チューニング前)〜60(簡単なチューニング後)Mbps出てました。


ほかにもご意見などお待ちしております。
何故ゆえ、1ギガで少ないと言われたら、8ギガになるのか不明です。

Webサーバなら、2から4ギガ位は積んだ方が良いでしょ?ってアドバイスだと思うのですが。
apache自体は、速いCPU積むより、たくさんのメモリを積むことを推奨しています。

SSLアクセラレータを使うかどうかの境界線は、同時にWebコンテンツ自身にどれくらいCPU使うのかに左右されるんで目的と実際の検証次第って答えは明白で。

まあどちらにしても、最近SSL使うような案件を実務でやられて無い様ですから、実際にやるときでいいんじゃないですか?
単に、リバースプロクシ的なものを作って、SSL処理だけをやらせるのか、
それとも、そこで動的ページまで生成させるのか、
その辺の前提も書いていないので、具体的、というには少々、こちらでの勝手な条件の外挿が多くなりそうです。
どのみち、Apacheからのユーザまでのページデータの送信中にしろ、静的ページはファイルシステムに乗っているであろうからそれのバッファリングにしろ、メモリへのフットプリントは大きいのだし、
数値情報を欲しておられたので、その辺もトータルでお考えだとばかり、思っておりました。

その上で、CPUばかりに注目し、ずいぶんとアンバランスなメモリ搭載量を前提で数値を欲されていたので、どうなんだろうな?と思った次第です。
ちば◎キック様、犬野すずき様

ありがとうございます。意図がわかりました。
さらに私の質問内容の情報が足りない部分のご指摘ありがとうございます。

SSLのサーバーは、リバースプロクシ的なものを作って、SSL処理だけということにして、その他の仕事(動的なページ生成、静的なページは基本的にほとんどありません)はアプリケーションサーバーにさせようという考えでいます。

特にこういったことを気にしないくらいの小規模でのSSL関係はしょっちゅうしておりますが、大規模でSSLアクセラレーターの導入必須のようなシステムにはここ7,8年係っていないのが実情です。しかし、現在大規模まではいかなくても数千ユーザーの規模のあるシステムに関する提案の話が出てきそうなため、今必要な情報なのです。

実際に導入が決まった後に要件がきっちり決まった後に正確な見積もりが必要なときはある程度実測する必要がありますが、まだそんなところまで行っていない前準備的なものだったので、質問があいまいになってしまいました。申し訳ありません。

ただ、実際導入する場合にはメモリは2〜4GBとして見積もることにします。アドバイスありがとうございました。

基本的に構成は
Webサーバー+アプリケーションサーバー+DBサーバー
の3層構成になり、WebサーバーでSSL処理をさせるか、SSLアクセラレータ等により分離させるべきかどうか(どのようにするのが安価に構築できるのかという視点で)の判断に使いたいのです。

どうかよろしくお願いします。
あと追加情報として、ユーザーの1リクエストに対して、サーバが返すデータ量は5〜20KB程度です。
サーバーシステムはクライアントからのリクエストに対して、Apacheはそのまま(SSLの復号化データを)アプリケーションサーバーにデータを流し、アプリケーションサーバーはDBサーバーからのデータに数KB程度のオーバーヘッドデータを負荷して、Apacheはそのまま(SSLで暗号化後)クライアントに返すものです。

ISDNでも平均的に2〜4秒くらいで受け取れるくらいのデータ量しか流れません。
Dino 様

情報不足すみません。
ご指摘の通り、CentOS(32bit)ではデフォルトのKernelで4GBまでしか認識できません。表示したものは通常のSMP Kernelで実質メモリを4GBとして実験しました。参考までに、4,500TPS付近でCPUはほぼ100%張付き、LoadAverageで3.5程度でした。

※元々、VMwareESXi導入用に買ったマシンで実験したため実装メモリーが8GBと多くなっています。

要件定義前の情報収集ということであれば、仮の構成で導入されるロードバランサーにSSLアクセラレター搭載製品を選択し、当初はWebサーバでSSL処理をさせて様子をみて、負荷試験やシェークダウンテストなどでWebサーバでは処理が厳しそうなら、ロードバランサーのSSLアクセラレターの利用ライセンス購入し、以降、ロードバランサーのSSLアクセラレターに処理を行わせるという手もるかと思います。

ログインすると、残り3件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

ネットワーク&セキュリティ 更新情報

ネットワーク&セキュリティのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。