2014年8月15日金曜日

tomcatアプリケーションの負荷テスト

tomcatアプリケーションを負荷テストするにあたって必要なことをまとめる。

負荷テストクライアント


負荷テストツールには、JMeter を使う。
メーカーにいた8年くらい前からずっとスタンダードなツール。

pluginは入れておいたほうが良い。

http://jmeter-plugins.org/downloads/all/


リスナーとしては、以下を表示しておくと良い。

  • jp@gc – Response Times Over Time
  • jp@gc – Transactions per Second
  • jp@gc – Active Threads Over Time
  • jp@gc – Composite Graph (上記の選択表示)


スループットを制御するには jp@gc - Throughput Shaping Timer を使う。

RPS(Requests Per Second) とその継続秒数を指定して、スケジューリングすることが可能だ。


JMeterでハマった点は、PUT Method で Body パラメータをPOSTと同様には送信出来ないことだ。
Body Dataに直接 {key}={value}&... と記述すると送信出来た。変な仕様。


監視ツール

VisualVM と JConsole を使う。

VisualVM
http://visualvm.java.net/ja/gettingstarted.html
http://itpro.nikkeibp.co.jp/article/COLUMN/20090902/336270/?ST=develop&P=1

JConsole
JDKに標準で付属する監視ツール。


負荷テスト中監視したいのは、リクエストに成功しているかどうか、とメモリ領域に異常が無いかどうかである。

リクエストに成功しているかは、以下で確認出来る。


  • JMeter:レスポンスを確認
  • VisualVM :ヒープサイズに異常が無いか
  • VisualVM:待機スレッドが不必要に増加していないか


メモリ領域は、OutOfMemoryの原因が潜んでいないかどうかを確認する。


  • PermSize
  • CodeCache

CodeCacheについて


Hotspot VM は 動的コンパイラ(Just in Time) の1つであり、よく使われるプログラム(Hotspot)の
メモリ上のバイトコードをメモリ上のネイティブコードに変換するキャッシュの仕組みである。

よく使われる部分について、ネイティブと同程度の性能を得られる。


PermSizeが不足したOutOfMemoryError


perm領域を食いつぶしていた話



運用しておいた方が良いパラメータ

以下のブログにまとめられている。


こちらも参考になる。
http://kohago.blogspot.jp/2013/09/jvm-memory-system-jconsole.html


負荷テストの時だけ有効にしておきたい設定


0 件のコメント:

コメントを投稿