Tech Sketch Bucket of Technical Chips by TIS Inc.

JBossとTomcatの性能比較をしてみた

Pocket

TISでは今年度からOSSプロダクトサポートサービスの提供を開始しまして、対象製品としてJBossもサポートしております。今回はサポート業務の裏で行っている検証活動の中から、JBossとTomcatの性能検証を行った結果について少しピックアップしてみたいと思います。

JBoss使ってますか?

JBoss AS (Application Server) 7.1.1.finalがリリースされてから約2年たちました。JBossコミュニティの現在の開発対象は既にバージョン8系(※1)に移っていますので7系の機能追加やバグ修正がされることはありませんが、JBossの7系は商用製品であるJBoss EAP (Enterprise Application Platform) 6のベースとなっているプロダクトですので、本番環境でJBoss EAP6をお使いの環境ではちょっとした確認をするときにJBoss AS7を使ってみるという方もいらっしゃるのではないでしょうか。

※1:バージョン8からJBoss→WildFlyというように改名しています。

JBoss ASとEAPについてどういった性能の違いがあるのか、またAPサーバとして代表的なプロダクトであるTomcatとの違いを見てみるために検証を行ってみました。

JBoss AS vs JBoss EAP vs Tomcat

検証内容としてはオーソドックスなレスポンスタイムの比較を行いました。Tomcatについては現在多く利用されているであろうバージョン7系を利用します。EAPとASの違いも見てみるためにEAPは2014年6月時点で最新版だった6.2(※2)を、ASはEAP6系のベースとなっている7.1の最新版を利用します。

※2:2014年8月に最新版の6.3がリリースされています。

  • プロダクト
プロダクト バージョン
Tomcat 7.0.53
JBoss AS 7.1.1
JBoss EAP 6.2.0
  • 検証環境

jboss-20140912-01.png

それぞれシングルノードです。クライアント端末でApache JMeterを稼働し、各APサーバへは同じサンプルアプリケーション(ショッピングカートアプリ)をデプロイし、そのアプリケーションに対してアクセスすることで負荷をかけます。

  • スペック
サーバ OS CPU MEM
JBoss AS用サーバ CentOS 6.5 (x64) 1vCPU 1GB
JBoss EAP用サーバ CentOS 6.5 (x64) 1vCPU 1GB
Tomcat用サーバ CentOS 6.5 (x64) 1vCPU 1GB

スペックは現行のサーバと比較すると貧弱ですが、環境が揃ってさえいれはミドルウェアの性能比較としては問題ないだろうということでこのスペックで試験をしました。

レスポンスタイム

アプリケーションに対する同時接続数を増やしていった時のレスポンスタイムの平均を計測してみました。

結果1-1:トップページに負荷をかけた場合のレスポンスタイム

まず、アプリケーションの中でも比較的データ量が少ないトップページ(テキストと画像を数個表示するのみ)に対して負荷をかけていった結果がこちらのグラフです。

jboss-20140912-02.png

同時接続数を多くしていくとJBoss EAPはTomcat,JBoss ASに対してレスポンスタイムが悪くなるということがわかります。TomcatとJBoss ASはこの結果ではそれほど差はありませんでした。

結果2-1:商品検索画面に負荷をかけた場合のレスポンスタイム

次に、アプリケーションの中でも処理が重いページ(データを検索して表示する)に対して負荷をかけてみた結果がこちらのグラフになります。

jboss-20140912-03.png

JBoss ASは結果1-1ではTomcatと同等の性能でしたが、処理が重くなるとレスポンスが悪化するようです。

興味深いのはJBoss EAPとTomcatでは同時接続数が低い状態ではTomcatの方が応答が早いのですが、同時接続数が多くなるとJBoss EAPの方が応答が早くなる傾向になるという点です。

今回の環境では同時接続数300の時点でどの環境もCPU負荷がほぼ100%まで達してしまったため、CPUを増やして同時接続数を増やしてみるともう少しはっきり傾向がわかるのかもしれません。

レスポンスタイムの分布

上で行った検証の同時接続数300のときのレスポンスタイムの分布状況を見てみました。

結果1-2:トップページのレスポンスタイムの分布状況

下は結果1-1のときのレスポンスタイムの分布をグラフにしたものです。グラフの横軸はレスポンスタイム、縦軸はレスポンスの件数となっています。

jboss-20140912-05.png

結果1-1のレスポンスタイムの結果から大体想像はつきますが、JBoss EAPと比べてレスポンスが良かったTomcatとJBoss ASはグラフの左側に分布が寄っています。

結果2-2:商品検索画面のレスポンスタイムの分布状況

結果2-1のときのレスポンスタイムの分布状況は下のグラフになりました。

jboss-20140912-06.png

TomcatとJBoss ASはグラフの山が低く、JBoss EAPはグラフの山が高いことがわかるかと思います。

JBoss EAPは結果2-1の同時接続数300のときでレスポンスタイムの平均は700〜800msくらいでしたが、平均付近でレスポンスを返してくるトランザクションがTomcat,JBoss ASに比べて多かったという結果になりました。

まとめ

結果をざっくりとまとめると「処理の軽いページの場合はTomcat,JBoss ASはレスポンスが早い。処理の重いページや高負荷になるとJBoss EAPの方が早い」ということになりそうです。JBoss EAPはコミュニティ版であるJBoss ASをレッドハット社がエンタープライズ向けに再構成してリリースされていますので、今回の結果はその影響が現れたといっていいのかもしれません。

性能検証の結果としてレスポンスタイムを計測したものはよく見ますが、そのときの分布も合わせて見てみるとプロダクトごとの傾向がより明確になります。製品選定や開発時の評価基準として参考にして頂ければと思います。

エンジニア採用中!私たちと一緒に働いてみませんか?