パフォーマンス測定関連メモ書き1
最近、仕事で品質管理(主に性能問題)関連の調査をやってます。
で、そのメモ書き。
1.kimu-aop
http://code.google.com/p/kimu-aop/
aopのライブラリ。クラスロード時に使用でき、エージェントとして動く。アプリケーションサーバや、FWに制約されないのが○。性能問題で、ログをいちいち埋め込まなく手はならなくなった場合に使用を検討するつもり。あと、がんばればS2Javelinを使うことも可能で、S2登録コンポーネント以外も対象とできる(でも、インターセプタ?は自分で記述する必要あり)。
2.WebSphereの機能(PMIとかモニターとか)
結構、APPサーバの機能も侮りがたい。Httpリクエストのパスごとに、平均処理時間、最大処理時間、回数、合計時間とか出してくれたする。なので、どのURL、どの業務が遅いかはざっくりと調べることは可能。
InfoCenter Was7 モニターのあたりでも参考に。
EJBのデータとか、コネクションの情報もとれるけど、EJBは使わないし、コネクションの情報もちょっと荒いかな・・・て印象(でも、コネクションプールがつまってるとか、その程度はわかる)。
今の問題は、
- サーバを止めるとデータが消える
- ログ出力は、常時ではなく「指定した時間よりXX時間出力」って感じになってる
あたり。テストフェイズでのデータ収集に使いたいのだが、どうしたものやら・・・・。
ちなみに、perfservletっていうHTTPでパフォーマンス情報を取る為のアプリがある。これを使って自分で実装しろってことだろうか・・・。
PerfServletの使い方は、PerfServletApp.ear ( WAS_HOME/installableAppsにある )をディプロイして、
http://hostname/wasPerfTool/servlet/perfservlet
にアクセスすると
<Stat name="JVM ランタイム"> <BoundedRangeStatistic ID="1" highWaterMark="230523" integral="8.3264423564E10" lastSampleTime="1237181106197" lowWaterMark="51200" lowerBound="51200" mean="22090.39590115723" name="HeapSize" startTime="1237177336938" unit="K バイト" upperBound="262144" value="220504"/> <CountStatistic ID="2" count="35997" lastSampleTime="1237181420688" name="FreeMemory" startTime="1237177336938" unit="K バイト"/> <CountStatistic ID="3" count="184507" lastSampleTime="1237181420688" name="UsedMemory" startTime="1237177336938" unit="K バイト"/> <CountStatistic ID="4" count="4083" lastSampleTime="1237181420688" name="UpTime" startTime="1237177336938" unit="秒"/> <CountStatistic ID="5" count="10" lastSampleTime="1237181420688" name="ProcessCpuUsage" startTime="1237177336750" unit="なし"/> </Stat>
とかいう感じで、XMLが取れる。Appのレスポンス情報とかもXMLにはいってるし、コネクションの情報とかもXMLに入ってる感じです。この辺は延々と調べることになりそうなので、ちまちま書いていくことになりそうです。