Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
なにもわからないところから始めるJVMモニタリング
Search
Yuuki Tsubouchi (yuuk1)
April 07, 2014
Technology
5
9.9k
なにもわからないところから始めるJVMモニタリング
JVM Operation Casual Talks
Yuuki Tsubouchi (yuuk1)
April 07, 2014
Tweet
Share
More Decks by Yuuki Tsubouchi (yuuk1)
See All by Yuuki Tsubouchi (yuuk1)
AIスパコン「さくらONE」のLLM学習ベンチマークによる性能評価 / SAKURAONE LLM Training Benchmarking
yuukit
2
620
とあるSREの博士「過程」 / A Certain SRE’s Ph.D. Journey
yuukit
11
4.3k
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
1.1k
クラウドのテレメトリーシステム研究動向2025年
yuukit
4
1k
博士論文公聴会: Scaling Telemetry Workloads in Cloud Applications: Techniques for Instrumentation, Storage, and Mining / PhD Defence
yuukit
1
250
博士学位論文予備審査 / Scaling Telemetry Workloads in Cloud Applications: Techniques for Instrumentation, Storage, and Mining
yuukit
1
2.1k
MetricSifter:クラウドアプリケーションにおける故障箇所特定の効率化のための多変量時系列データの特徴量削減 / FIT 2024
yuukit
2
300
工学としてのSRE再訪 / Revisiting SRE as Engineering
yuukit
19
14k
Cloudless Computingの論文紹介
yuukit
2
590
Other Decks in Technology
See All in Technology
履歴 on Rails: Bitemporal Data Modelで実現する履歴管理/history-on-rails-with-bitemporal-data-model
hypermkt
0
1.7k
Oracle Cloud Infrastructure:2025年9月度サービス・アップデート
oracle4engineer
PRO
0
310
組織観点からIAM Identity CenterとIAMの設計を考える
nrinetcom
PRO
1
130
Pure Goで体験するWasmの未来
askua
1
150
非同期処理実行基盤 Delayed脱出 → Solid Queue完全移行への旅路。
srockstyle
3
1.3k
DataOpsNight#8_Terragruntを用いたスケーラブルなSnowflakeインフラ管理
roki18d
1
290
今改めてServiceクラスについて考える 〜あるRails開発者の10年〜
joker1007
20
9k
RailsのPostgreSQL 18対応
yahonda
0
1.2k
AIが書いたコードをAIが検証する!自律的なモバイルアプリ開発の実現
henteko
1
230
Findy Team+のSOC2取得までの道のり
rvirus0817
0
240
BtoBプロダクト開発の深層
16bitidol
0
140
[2025-09-30] Databricks Genie を利用した分析基盤とデータモデリングの IVRy の現在地
wxyzzz
0
400
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Building an army of robots
kneath
306
46k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
840
Raft: Consensus for Rubyists
vanstee
139
7.1k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Large-scale JavaScript Application Architecture
addyosmani
513
110k
Faster Mobile Websites
deanohume
310
31k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Transcript
ͳʹΘ͔Βͳ͍ͱ͜Ζ͔Β ࢝ΊΔ+7.ϞχλϦϯά
id:y_uuki / @y_uuk1
None
None
✘
✘
PSGI/Plack Devel::NYTProf Devel::KYTProf Starlet Plack::Middleware::ServerStatus::Lite
PSGI/Plack Devel::NYTProf Devel::KYTProf Starlet Plack::Middleware::ServerStatus::Lite
ΠϯλʔωοτΈΔ • http://gihyo.jp/dev/serial/01/jvm-arc ! • http://www.slideshare.net/ChihiroIto1/java-16802525 JavaͲͷΑ͏ʹಈ͘ͷ͔ʙਤղͰΘ͔ΔJVMͷΈ JavaͲͷΑ͏ʹಈ͘ͷ͔ʙεϥΠυͰΘ͔ΔJVMͷΈ
ϝϞϦߏ / GCͷछྨ • Eden, Survivor, Tenured, Permanent… • γϦΞϧGCɺύϥϨϧGCɺίϯΧϨϯτGC
ϩάΛు͘ • http://n-agetsuma.hatenablog.com/entry/2014/03/30/175329 τϥϒϧʹඋ͑ΔJVMΦϓγϣϯ java -Xms?m -Xmx?m -XX:MaxPermSize=?m -Xloggc:/var/log/app/gc.log -XX:+PrintGCDetails
-XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/app -XX:ErrorFile=/var/log/app/jvm_err_pid%p.log
౷ܭใΈΔπʔϧ • jstat • jvmtop • Jolokia (JMX) • much
more…
jstat [y_uuki@hoge]$ sudo jstat -gc 30545 1000 S0C S1C S0U
S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 3072.0 3072.0 0.0 2400.0 343552.0 181900.4 699392.0 125193.0 55808.0 55592.9 719 8.034 0 0.000 8.034 3072.0 3072.0 0.0 2400.0 343552.0 189558.2 699392.0 125193.0 55808.0 55592.9 719 8.034 0 0.000 8.034 3072.0 3072.0 0.0 2400.0 343552.0 291417.5 699392.0 125193.0 55808.0 55592.9 719 8.034 0 0.000 8.034 3072.0 3072.0 0.0 2400.0 343552.0 291423.7 699392.0 125193.0 55808.0 55592.9 719 8.034 0 0.000 8.034 3072.0 3072.0 0.0 2400.0 343552.0 300260.1 699392.0 125193.0 55808.0 55592.9 719 8.034 0 0.000 8.034 3072.0 3072.0 0.0 2400.0 343552.0 300266.3 699392.0 125193.0 55808.0 55592.9 719 8.034 0 0.000 8.034 3072.0 3072.0 0.0 2400.0 343552.0 338223.4 699392.0 125193.0 55808.0 55592.9 719 8.034 0 0.000 8.034 3072.0 3072.0 2513.7 0.0 343552.0 5373.4 699392.0 125337.0 55808.0 55592.9 720 8.041 0 0.000 8.041 3072.0 3072.0 2513.7 0.0 343552.0 14378.4 699392.0 125337.0 55808.0 55592.9 720 8.041 0 0.000 8.041 3072.0 3072.0 2513.7 0.0 343552.0 14381.3 699392.0 125337.0 55808.0 55592.9 720 8.041 0 0.000 8.041 …
jvmtop $ jvmtop.sh <pid> JvmTop 0.8.0 alpha - 21:48:03, amd64,
4 cpus, Linux 3.10.23, load avg 0.30 http://code.google.com/p/jvmtop ! PID 30545: play.core.server.NettyServer ARGS: VMARGS: -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSiz[...] VM: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 1.7.0_51 UP: 7:49m #THR: 41 #THRPEAK: 44 #THRCREATED: 5867 USER: apache GC-Time: 0: 0m #GC-Runs: 892 #TotalLoadedClasses: 10033 CPU: 2.21% GC: 0.00% HEAP: 454m /1019m NONHEAP: 64m / 384m ! TID NAME STATE CPU TOTALCPU BLOCKEDBY 5862 RMI TCP Connection(3)-127.0.0. RUNNABLE 9.20% 0.29% 31 play-scheduler-1 TIMED_WAITING 0.26% 4.43% 5867 JMX server connection timeout TIMED_WAITING 0.24% 0.01% 27 New I/O worker #8 RUNNABLE 0.01% 0.71% 21 New I/O worker #2 RUNNABLE 0.01% 0.75% 22 New I/O worker #3 RUNNABLE 0.01% 0.72% 20 New I/O worker #1 RUNNABLE 0.01% 0.72% 24 New I/O worker #5 RUNNABLE 0.00% 0.72% 26 New I/O worker #7 RUNNABLE 0.00% 0.72% 23 New I/O worker #4 RUNNABLE 0.00% 0.72% Note: Only top 10 threads (according cpu load) are shown!
Jolokia $ curl http://localhost:8778/jolokia/read/java.lang:type=Memory/ NonHeapMemoryUsage {"timestamp":1396794086,"status":200,"request": {"mbean":"java.lang:type=Memory","attribute":"NonHeapMemoryUsage","type":"re ad"},"value":{"max":402653184,"committed":59179008,"init":24576000,"used": 58814424}} -javaagent:/path/to/jolokia-jvm-1.2.0-agent.jar
ՄࢹԽ • Graphite • Sensu • Fluentd • Mackerel •
NewRelic
metrics ࣌ܥྻDB αʔόཧπʔϧ
• sensu / sensu-community-plugins • java/jstat-metrics.py
• fluent-plugin-jstat • fluent-plugin-jolokia
• sensu tcp handler • fluent-plugin-graphite
None
NewRelic -javaagent:/path/to/newrelic.jar
None
Stop The World ʹඋ͑ͯ • ϞχλϦϯάͷΈΛ͔͑ͯΒͷJVM ύϥ ϝʔλνϡʔχϯά
͓·͚
ॻ੶ 2010/03 2011/10 2014/05
Πϯλʔωοτ σϑΥϧτͷΧςΰϦશ෦ফͯ͠ Linux, Kernel, Docker, JVM, Perl, Scala, Graphite, Fluentd,
Sensu, … ͦΕͬΆ͍λάΛొ͠·͘Δ
None
IUUQTNBDLFSFMJP