2011-08-03
Jetty6と7をJava6と7でパフォーマンス実験してみました
rpscala第45回で黙々とパフォーマンス実験をしてきました。
内容
Jetty6とJetty7のパフォーマンス実験です。
Java6とJava7をそれぞれ組み合わせて、単純なアプリケーションのスループットを測りました。
なんでこれをScala勉強会でやってるのか、というと、動かしているアプリケーションがScalatraだからです。
要するに、ScalaのWebアプリケーションを載っけるのに、Jetty6と7、どっちが速いのか+Java7だったらどうなのか、という実験です。
結果
- Jetty7 + Java6が最速でした。
というわけで、ScalaのWebアプリならJetty7をJava6で使うと速いです。Jetty側でいろいろと最適化されているものと思われます。
なお、Jetty6ではJava6よりもJava7のほうが多少速かったので、Java7が遅いという訳ではないようです。
※ 限られた実験結果です。業務で使う人はもっとちゃんと実験しましょう。
環境
EC2のlargeインスタンス1でJettyを動かし、もう1つのlargeインスタンスから負荷をかける構成。
OSはAmazon Linux 64bit
各コンポーネントのバージョンは以下のとおり。
- Jetty7 7.4.5
- Jetty6 6.1.26
- JDK7 GA
- JDK6 1.6.0 u26
動かしたアプリケーション
このmaven archetypeで作ったサンプルアプリケーション(HelloWorld)
Srirangan/simple-scalatra-archetype ? GitHub
の
ScalaとScalatraのバージョンを以下のとおり変えたものです。
- Scala 2.8.1 => 2.9.0-1
- Scalatra 2.0.0M3 => 2.0.0M4
mvn packageでビルドしたwarをjettyのwebappディレクトリにデプロイして動かしました。
Jettyの設定
Jetty7の設定に合わせて、Jetty6のNIOコネクタのlowResourcesConnectionsを5000から20000に変更してあります。
その他の値はデフォルトの状態です。
測定方法
- Jetty起動
- ab -n 10000 -c 100 を5回(ならし)
- ab -n 10000 -c 100 を5回(計測して平均request/secを取る)
数字
数値はrequest/secです。
| 構成 | スループット |
|---|---|
| Jetty6 - Java6 | 2811 |
| Jetty6 - Java7 | 3104 |
| Jetty7 - Java6 | 4730 |
| Jetty7 - Java7 | 4329 |
おまけ
Tomcatも測ってみました。
結果、Tomcat7はNIOコネクタに変えると遅いんですが、標準のブロッキングIOのコネクタが速かったです。Jettyよりも。
| 構成 | スループット |
|---|---|
| Tomcat7.0.19 - Java6 | 5361 |
| Tomcat7.0.19 - Java7 | 5198 |
| Tomcat7.0.19 NIO - Java6 | 3618 |
| Tomcat7.0.19 NIO - Java7 | 3452 |
| Tomcat6.0.32 - Java6 | 4212 |
| Tomcat6.0.32 - Java7 | 4370 |
| Tomcat6.0.32 NIO - Java6 | 4578 |
| Tomcat6.0.32 NIO - Java7 | 4211 |
なお、あくまでデフォルトの設定で、かつこの環境で速かっただけなので、必ずしも常にTomcat7がJetty7より速いわけではないです。
また機会があったら、もっと突っ込んで調べようと思います。
- 69 http://www.google.co.jp/search?q=eclipse.ini+StackOverFlow&btnG=検索&hl=ja&lr=lang_ja&tbs=lr:lang_1ja&sa=2
- 63 http://www.google.co.jp/url?sa=t&rct=j&q=kestrel scala&source=web&cd=2&ved=0CCQQFjAB&url=http://d.hatena.ne.jp/hito_asa/20101018/1287382292&ei=2ESlToucHaXPmAXH_-2iCQ&usg=AFQjCNHzbRm8nxO6AAvnTbt5DpFOkPeMpw&sig2=8oNxNuw_q51vROZ213tRcg&cad=rja
- 48 http://www.google.co.jp/url?sa=t&rct=j&q=activemq 使い方&source=web&cd=2&ved=0CDMQFjAB&url=http://d.hatena.ne.jp/hito_asa/20101012/1286881708&ei=EaWfTratEuiXiQe76YzPBg&usg=AFQjCNHHr3ThykntP1Ek8b_fsbk9hjHNvQ&sig2=61PO-UBF
- 43 http://twitter.com/
- 43 http://www.google.co.jp/url?sa=t&rct=j&q=scala json&source=web&cd=6&ved=0CEIQFjAF&url=http://d.hatena.ne.jp/hito_asa/20101108/1289196637&ei=W6iEToXqDOr2mAXlkKwb&usg=AFQjCNEbnkmXCfK13PrVvjTbAwIXzXKUpg&sig2=K2jD4x-157MEhBO7Wg6Sew&cad=rjt
- 38 http://www.google.co.jp/url?sa=t&rct=j&q=activemq使い方&source=web&cd=2&ved=0CC0QFjAB&url=http://d.hatena.ne.jp/hito_asa/20101012/1286881708&ei=7hqmTvPhG8zxmAWF6ImeDw&usg=AFQjCNHHr3ThykntP1Ek8b_fsbk9hjHNvQ
- 32 http://d.hatena.ne.jp/xuwei/20110805/1312551980
- 32 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cts=1330922329647&ved=0CCUQFjAA&url=http://d.hatena.ne.jp/hito_asa/20100916/1284655932&ei=G0NUT-raO-7nmAWl16SNCg&usg=AFQjCNEyhruEhpJ7Kd8JL-j6zHiJ0wTcVw
- 31 http://www.google.co.jp/url?sa=t&rct=j&q=activemq+使い方&source=web&cd=2&ved=0CC4QFjAB&url=http://d.hatena.ne.jp/hito_asa/20101012/1286881708&ei=Qv7JTo-NG-3smAXt9uQE&usg=AFQjCNHHr3ThykntP1Ek8b_fsbk9hjHNvQ&sig2=n_rKIHN312UM
- 31 http://www.google.co.jp/url?sa=t&rct=j&q=sjson&source=web&cd=3&ved=0CC4QFjAC&url=http://d.hatena.ne.jp/hito_asa/20101108/1289196637&ei=eh6kTpOvLIPumAX0if2WCQ&usg=AFQjCNEbnkmXCfK13PrVvjTbAwIXzXKUpg&sig2=u0ZxDx4bs2AhGlubgTqmCQ




