SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
GlassFishとProfiler

 KUBOTA Yuji (@sugarlife)




                            #glassfishjp
                                          1
hprof
GlassFishと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 domain1
Waiting 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 platform
ERROR: 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 more
Error stopping framework: java.lang.NullPointerException
java.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

Contenu connexe

Tendances

Power shellmemo
Power shellmemoPower shellmemo
Power shellmemoytanno
 
開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~
開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~
開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~CubedKachi
 
意識の低い自動化
意識の低い自動化意識の低い自動化
意識の低い自動化greenasparagus
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudyTakeshi Komiya
 
第5回勉強会
第5回勉強会第5回勉強会
第5回勉強会Mugen Fujii
 
「Eye」でカジュアルにプロセス監視
「Eye」でカジュアルにプロセス監視「Eye」でカジュアルにプロセス監視
「Eye」でカジュアルにプロセス監視Takeshi Yabe
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalkBIGLOBE Tech Talk
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalkBIGLOBE Tech Talk
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テストKen Morishita
 
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShellそれでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShellHidari Ikw
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室Yusuke Ando
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 
Let s database_testing
Let s database_testingLet s database_testing
Let s database_testingYuji Shimada
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejsTakayoshi Tanaka
 
プラガブル Play20 Scala
プラガブル Play20 Scalaプラガブル Play20 Scala
プラガブル Play20 ScalaKazuhiro Sera
 
やってみた -URL外形監視-
やってみた -URL外形監視-やってみた -URL外形監視-
やってみた -URL外形監視-Joe_noh
 
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょJavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょKohki Nakashima
 

Tendances (20)

Power shellmemo
Power shellmemoPower shellmemo
Power shellmemo
 
開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~
開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~
開発チームもIaCやってみたい~VSOとDockerの組合せにチャレンジ~
 
Play with Playframework
Play with PlayframeworkPlay with Playframework
Play with Playframework
 
意識の低い自動化
意識の低い自動化意識の低い自動化
意識の低い自動化
 
明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy明日から始める Chef 入門 #bpstudy
明日から始める Chef 入門 #bpstudy
 
第5回勉強会
第5回勉強会第5回勉強会
第5回勉強会
 
「Eye」でカジュアルにプロセス監視
「Eye」でカジュアルにプロセス監視「Eye」でカジュアルにプロセス監視
「Eye」でカジュアルにプロセス監視
 
Ansible超入門
Ansible超入門Ansible超入門
Ansible超入門
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShellそれでも僕はユニットテストを書きたい - Pester powered by PowerShell
それでも僕はユニットテストを書きたい - Pester powered by PowerShell
 
Play勉強会 第3回
Play勉強会 第3回Play勉強会 第3回
Play勉強会 第3回
 
8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室8時間耐久PHPUnitの教室
8時間耐久PHPUnitの教室
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
Let s database_testing
Let s database_testingLet s database_testing
Let s database_testing
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
プラガブル Play20 Scala
プラガブル Play20 Scalaプラガブル Play20 Scala
プラガブル Play20 Scala
 
やってみた -URL外形監視-
やってみた -URL外形監視-やってみた -URL外形監視-
やってみた -URL外形監視-
 
JavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょJavaScriptでWebDriverのテストコードを書きましょ
JavaScriptでWebDriverのテストコードを書きましょ
 

Similaire à #glassfishjp GlassFishとProfiler

29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
29 Tips in 40 Minitues for GlassFish Fans #glassfishjpYuji Kubota
 
Glassfishで始める モテる!簡単クラスタ入門
Glassfishで始める モテる!簡単クラスタ入門Glassfishで始める モテる!簡単クラスタ入門
Glassfishで始める モテる!簡単クラスタ入門Takafumi Yoshida
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編Asami Abe
 
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころsbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころKazuhiro Hara
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_GebNobuhiro Sue
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...佑介 九岡
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12Ryuji Yamashita
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたdo_aki
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfesTakeshi Komiya
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションKazuhiro Hara
 
Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介Masaru Horioka
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイKazuhiro Hara
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境Masashi Shinbara
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会Yuki Okada
 

Similaire à #glassfishjp GlassFishとProfiler (20)

29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
 
Glassfishで始める モテる!簡単クラスタ入門
Glassfishで始める モテる!簡単クラスタ入門Glassfishで始める モテる!簡単クラスタ入門
Glassfishで始める モテる!簡単クラスタ入門
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころsbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
 
Haikara
HaikaraHaikara
Haikara
 
TDC20111031_Groovy_Geb
TDC20111031_Groovy_GebTDC20111031_Groovy_Geb
TDC20111031_Groovy_Geb
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
 
about Perl5.10
about Perl5.10about Perl5.10
about Perl5.10
 
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみたWebサーバ勉強会4 nginx で php-fpm を動かしてみた
Webサーバ勉強会4 nginx で php-fpm を動かしてみた
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
 
Hello Java
Hello JavaHello Java
Hello Java
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介
 
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話 Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
 
Leiningen超速入門
Leiningen超速入門Leiningen超速入門
Leiningen超速入門
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
 

Plus de Yuji Kubota

Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Yuji Kubota
 
Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Yuji Kubota
 
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMYuji Kubota
 
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Yuji Kubota
 
オンライン会議と音声認識
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識Yuji Kubota
 
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjugHead toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjugYuji Kubota
 
Catch up Java 12 and Java 13
Catch up Java 12 and Java 13Catch up Java 12 and Java 13
Catch up Java 12 and Java 13Yuji Kubota
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugYuji Kubota
 
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugIntroduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugYuji Kubota
 
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Yuji Kubota
 
Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjavaYuji Kubota
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjugYuji Kubota
 
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Yuji Kubota
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjugYuji Kubota
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasualYuji Kubota
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpYuji Kubota
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugYuji Kubota
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Yuji Kubota
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpYuji Kubota
 

Plus de Yuji Kubota (20)

Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
 
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DM
 
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15
 
オンライン会議と音声認識
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識
 
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjugHead toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
 
Catch up Java 12 and Java 13
Catch up Java 12 and Java 13Catch up Java 12 and Java 13
Catch up Java 12 and Java 13
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
 
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugIntroduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjug
 
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
 
Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjava
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjug
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasual
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 

Dernier

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Dernier (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

#glassfishjp GlassFishとProfiler

  • 1. GlassFishとProfiler KUBOTA Yuji (@sugarlife) #glassfishjp 1
  • 2. hprof GlassFishとProfiler KUBOTA Yuji (@sugarlife) #glassfishjp 2
  • 3. 自己紹介 • KUBOTA Yuji (@sugarlife) • 難聴者 • トラブルシューター • JVM (主にGC) 好き • GlassFish/JBoss EAP 検証 検証終了 #glassfishjp 3
  • 4. 今回のお話は • GlassFish Open Source Edition 3.1.2.2の 検証中、Profiler(hprof)を利用した際に困っ たことがあったのでその共有。 #glassfishjp 4
  • 5. 試験中に何かが発生 CPU Usage 100 75 50 25 0 ※イメージです #glassfishjp 5
  • 6. まずはリソース確認 • 各種リソース確認するも主立った問題なし… • (d¦vm¦net¦*)stat / sar / sockets / ps / gc / Statspack / etc... ※イメージです #glassfishjp 6
  • 7. というわけで、 • Profile! Profile!! Profile!!! どこかで聞いたフレーズ #glassfishjp 7
  • 8. Profilerは? • サードパーティ製を含めると沢山 • NetBeans Profiler • JProbe Profiler • VisualVM • 今回はJDKに付属しているhprof を利用。 #glassfishjp 8
  • 9. 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
  • 10. GlassFishでhprofを動かそう • GUI(Admin Console)から #glassfishjp 10
  • 11. GlassFishでhprofを動かそう • GUI(Admin Console)から 一応お墨付き Oracle GlassFish Server 3.1 Development Guide にも記載されている #glassfishjp 11
  • 12. 実際に動かしてみると… • 再起動が必要なので $ asadmin restart-domain : : • 終わらない start/stopと違って タイムアウトしない #glassfishjp 12
  • 13. 何が起きたのか? [^]$ asadmin start-domain domain1 Waiting 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 platform ERROR: 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 more Error stopping framework: java.lang.NullPointerException java.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
  • 14. どうする? • GlassFishのJIRAには登録なし • 定期的に{Thread¦Heap}dump類を取得する • 他のProfilerを利用する • 諸般の理由で環境構築が難しい • Apache Felix 追いかけて原因探る • ドキュメント確認、 3.1だと実は動く classpath設定部分の実装確認、 btraceで追いかける(これは趣味) #glassfishjp 14
  • 15. 原因 • ${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
  • 16. 結果 • $ asadmin start-domainで無事起動 • hprofで生成されるファイルは、 ${installdir}/glassfish/domains/<domain>/config/ に配置される。 • profiler設定は上記ディレクトリにある domain.xmlの<profiler>属性に記述される。 • 起動しなくなったらここを削除する。 • <jvm-options>もhprof関係がないか確認。 #glassfishjp 16