20
HeapStats: JVM レイヤ からみつめる OSS 障害 解析支援ツール KUBOTA Yuji @sugarlife Copyright©2015 NTT corp. All Rights Reserved. Seasar Conference 2015 LT

HeapStats @ Seasar Conference 2015 LT

Embed Size (px)

Citation preview

Page 1: HeapStats @ Seasar Conference 2015 LT

HeapStats: JVM レイヤからみつめる OSS 障害

解析支援ツール

KUBOTA Yuji @sugarlife

Copyright©2015 NTT corp. All Rights Reserved.

Seasar Conference 2015 LT

Page 2: HeapStats @ Seasar Conference 2015 LT

Copyright©2015 NTT corp. All Rights Reserved. 2

目的

Page 3: HeapStats @ Seasar Conference 2015 LT

OpenJDK (Java) の トラブル解決チーム

↓ ノウハウを OSS 化

Copyright©2015 NTT corp. All Rights Reserved. 3

どんな OSS ?

Page 4: HeapStats @ Seasar Conference 2015 LT

Copyright©2015 NTT corp. All Rights Reserved. 4

Page 5: HeapStats @ Seasar Conference 2015 LT

襲いかかるトラブル

Copyright©2015 NTT corp. All Rights Reserved. 5

Caused by: java.sql.SQLException: プロトコル違反です。 at xxx.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at xxx.jdbc.driver.Statement.executeForDescribe(Statement.java:804) at xxx.jdbc.driver. Statement.doExecuteWithTimeout(Statement.java:1154) at xxx.jdbc.driver.Statement.executeQuery(Statement.java:1313) at com.xxx.query.QueryDataSet.<init>(QueryDataSet.java:80) at org.xxx.database.util.BaseSQL.executeQuery(BaseSQL.java:930) ... 26 more

Exception in thread "TP-Processor9" java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3221) at java.lang.String.<init>(String.java:233) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at javax.servlet.http.HttpServlet.service(HttpServlet.java:643) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at java.lang.Thread.run(Thread.java:619)

Page 6: HeapStats @ Seasar Conference 2015 LT

よくある困ったパターン

6

• ログがない • 手作業ミスで(ログが)消し飛んだ • サービス環境で重い処理(≒ログ

収集・解析) が禁止されている • 個人情報関係で重要ログが来ない

Copyright©2015 NTT corp. All Rights Reserved.

Page 7: HeapStats @ Seasar Conference 2015 LT

いいから

7

• ログがない • 手作業ミスで(ログが)消し飛んだ • サービス環境で重い処理(≒ログ

収集・解析) が禁止されている • 個人情報関係で重要ログが来ない

Copyright©2015 NTT corp. All Rights Reserved.

ログを取る

Page 8: HeapStats @ Seasar Conference 2015 LT

作った

Copyright©2015 NTT corp. All Rights Reserved. 8

ServerApplication

Agent Local Machine

AnalyzerJVM に

アタッチ

別環境で解析

Page 9: HeapStats @ Seasar Conference 2015 LT

Agent

Copyright©2015 NTT corp. All Rights Reserved.

ServerApplication

Agent

JVM にアタッチ

Local Machine

Analyzer

別環境で解析

Page 10: HeapStats @ Seasar Conference 2015 LT

Agent

Copyright©2015 NTT corp. All Rights Reserved.

ServerApplication

Agent

JVM にアタッチ

Local Machine

Analyzer

別環境で解析

アセンブラ/C++製 Agent

•  インストール rpm -ivh heapstats*rpm

•  実行 java -agentlib:heapstats \    <Your Application>

•  常時収集+故障時は詳細に •  動作中でもオンオフ可能 •  低オーバーヘッド

Page 11: HeapStats @ Seasar Conference 2015 LT

282.68 269.92

0 50

100 150 200 250 300

Without HeapStats With HeapStats

(ops/m)SPECjvm2008 Composite Result

•  ベンチマークツール: SPECjvm2008 1.01•  マシン: DELL PowerEdge R810(Xeon X7542、メモリ32GB)•  OS: Red Hat Enterprise Linux Server release 6.3 x86_64•  Java: java-1.7.0-openjdk-1.7.0.25-2.3.10.4.el6_4.x86_64•  java起動オプション: -Xms4500m -Xmx4500m -XX:+UseG1GC -agentpath:<エージェントライブラリ>

オーバヘッド

Copyright©2015 NTT corp. All Rights Reserved. 11

※ 測定環境

4.51%

Page 12: HeapStats @ Seasar Conference 2015 LT

Analyzer

Copyright©2015 NTT corp. All Rights Reserved. 12

ServerApplication

Agent Local Machine

AnalyzerJVM に

アタッチ

別環境で解析

Page 13: HeapStats @ Seasar Conference 2015 LT

Analyzer

Copyright©2015 NTT corp. All Rights Reserved. 13

ServerApplication

Agent Local Machine

AnalyzerJVM に

アタッチ

別環境で解析

Swing 製 GUI Viewer

• インストール JARファイルを置くだけ

• 実行 java -jar heapstats.jar •  時系列情報を一覧で表示 •  CSV 出力機能もあるよ!

Page 14: HeapStats @ Seasar Conference 2015 LT

プロセスリソース(OS/JVM)

Copyright©2015 NTT corp. All Rights Reserved. 14

Page 15: HeapStats @ Seasar Conference 2015 LT

GC時間, ヒープ, メタスペース

Copyright©2015 NTT corp. All Rights Reserved. 15

Page 16: HeapStats @ Seasar Conference 2015 LT

クラスヒストグラム

Copyright©2015 NTT corp. All Rights Reserved. 16

[B byte[]

Page 17: HeapStats @ Seasar Conference 2015 LT

オブジェクト参照関係

Copyright©2015 NTT corp. All Rights Reserved. 17

[B byte[]

3rd パーティ製品なら連絡

Page 18: HeapStats @ Seasar Conference 2015 LT

障害発生時の詳細情報

Copyright©2015 NTT corp. All Rights Reserved. 18

Page 19: HeapStats @ Seasar Conference 2015 LT

Pros / Cons

Copyright©2015 NTT corp. All Rights Reserved. 19

Pros •  確実な初期行動がとれる •  メモリ絡みの問題はほぼ撃墜できる •  オーバーヘッドはかなり低い •  次バージョンからはスレッドの時系

列情報も取得できる

Cons •  プロファイリング情報は取れない•  Agent は Linux (x86/AMD64)限定

Page 20: HeapStats @ Seasar Conference 2015 LT

Thank You !

Copyright©2015 NTT corp. All Rights Reserved. 20

http://icedtea.classpath.org/wiki/HeapStats/jp

質問は @sugarlife か #heapstats へ!