• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
#glassfishjp GlassFishとProfiler
 

#glassfishjp GlassFishとProfiler

on

  • 1,316 views

#glassfishjp 2012/09/24の発表資料。

#glassfishjp 2012/09/24の発表資料。

Statistics

Views

Total Views
1,316
Views on SlideShare
946
Embed Views
370

Actions

Likes
0
Downloads
6
Comments
0

3 Embeds 370

http://www.glassfish-users.jp 362
https://twitter.com 6
http://cache.yahoofs.jp 2

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    #glassfishjp GlassFishとProfiler #glassfishjp GlassFishとProfiler Presentation Transcript

    • GlassFishとProfiler KUBOTA Yuji (@sugarlife) #glassfishjp 1
    • hprofGlassFishとProfiler KUBOTA Yuji (@sugarlife) #glassfishjp 2
    • 自己紹介• KUBOTA Yuji (@sugarlife) • 難聴者• トラブルシューター• JVM (主にGC) 好き• GlassFish/JBoss EAP 検証 検証終了 #glassfishjp 3
    • 今回のお話は• GlassFish Open Source Edition 3.1.2.2の 検証中、Profiler(hprof)を利用した際に困っ たことがあったのでその共有。 #glassfishjp 4
    • 試験中に何かが発生 CPU Usage 100 75 50 25 0 ※イメージです #glassfishjp 5
    • まずはリソース確認• 各種リソース確認するも主立った問題なし…• (d¦vm¦net¦*)stat / sar / sockets / ps / gc / Statspack / etc... ※イメージです #glassfishjp 6
    • というわけで、• Profile! Profile!! Profile!!! どこかで聞いたフレーズ #glassfishjp 7
    • Profilerは?• サードパーティ製を含めると沢山 • NetBeans Profiler • JProbe Profiler • VisualVM• 今回はJDKに付属しているhprof を利用。 #glassfishjp 8
    • GlassFishでhprofを動かそう • CUIから [^]$ asadmin create-profiler sample_profiler Command create-profiler executed successfully. [^]$ asadmin create-jvm-options --profile=true “-agentlib ¥:hprof=heap=sites,file=sample.hprof,interval=20,depth=3” Created 1 option(s) Command create-jvm-options executed successfully.hprofの詳細: http://docs.oracle.com/javase/7/docs/technotes/samples/hprof.html 赤文字に注意 #glassfishjp 9
    • GlassFishでhprofを動かそう • GUI(Admin Console)から #glassfishjp 10
    • GlassFishでhprofを動かそう • GUI(Admin Console)から 一応お墨付き Oracle GlassFish Server 3.1 Development Guide にも記載されている #glassfishjp 11
    • 実際に動かしてみると…• 再起動が必要なので $ asadmin restart-domain : :• 終わらない start/stopと違って タイムアウトしない #glassfishjp 12
    • 何が起きたのか?[^]$ asadmin start-domain domain1Waiting for domain1 to start .........Error starting domain domain1.The server exited prematurely with exit code 1.Before it died, it produced the following output:Launching GlassFish on Felix platformERROR: Bundle org.glassfish.hk2.osgi-adapter [91] Error starting file:/opt/glassfish3/glassfish/modules/osgi-adapter.jar(org.osgi.framework.BundleException: Activator start error in bundle org.glassfish.hk2.osgi-adapter [91].)ERROR: Bundle org.glassfish.main.core.glassfish [92] Error starting file:/opt/glassfish3/glassfish/modules/glassfish.jar(org.osgi.framework.BundleException: Activator start error in bundle org.glassfish.main.core.glassfish [92].)java.lang.NoClassDefFoundError: com/sun/demo/jvmti/hprof/Tracker at org.jvnet.hk2.osgiadapter.HK2Main.start(HK2Main.java:139) at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:641) at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977) at org.apache.felix.framework.Felix.startBundle(Felix.java:1895) at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191) at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295) at java.lang.Thread.run(Thread.java:722)Caused by: java.lang.ClassNotFoundException: com.sun.demo.jvmti.hprof.Tracker not found by org.glassfish.hk2.osgi-adapter [91]:(略)Caused by: java.lang.ClassNotFoundException: com.sun.demo.jvmti.hprof.Tracker not found by org.glassfish.main.core.glassfish [92]:(略)Caused by: org.glassfish.embeddable.GlassFishException: No GlassFishRuntime available at com.sun.enterprise.glassfish.bootstrap.osgi.OSGiGlassFishRuntimeBuilder.getGlassFishRuntime(OSGiGlassFishRuntimeBuilder.java:202) at com.sun.enterprise.glassfish.bootstrap.osgi.OSGiGlassFishRuntimeBuilder.build(OSGiGlassFishRuntimeBuilder.java:162) ... 9 moreError stopping framework: java.lang.NullPointerExceptionjava.lang.NullPointerException at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher$1.run(GlassFishMain.java:203)Dumping allocation sites ... done.Command start-domain failed.hprof自体は有効になっているが、OSGi Bundle部分はパスが通っていないのでこけてる。 #glassfishjp 13
    • どうする?• GlassFishのJIRAには登録なし• 定期的に{Thread¦Heap}dump類を取得する• 他のProfilerを利用する • 諸般の理由で環境構築が難しい• Apache Felix 追いかけて原因探る • ドキュメント確認、 3.1だと実は動く classpath設定部分の実装確認、 btraceで追いかける(これは趣味) #glassfishjp 14
    • 原因• ${installdir}/glassfish/config/osgi.properties   • org.osgi.framework.bootdelegation = ... に com.sun.demo.jvmti.hprof, com.sun.demo.jvmti.hprof.* の両方を追加• Apache Felixのバージョン変更の影響 • 3.1以前は指定なしで動作していた X分後のお鍋 #glassfishjp 15
    • 結果• $ asadmin start-domainで無事起動• hprofで生成されるファイルは、 ${installdir}/glassfish/domains/<domain>/config/ に配置される。• profiler設定は上記ディレクトリにある domain.xmlの<profiler>属性に記述される。 • 起動しなくなったらここを削除する。 • <jvm-options>もhprof関係がないか確認。 #glassfishjp 16
    • まとめ• GlassFishでプロファイルするつもりが、 プロファイルするためにプロファイルしていた #glassfishjp 17