Submit Search
Javaパフォーマンスチューニング基礎
10 likes
7,019 views
Hiroyuki Ohnaka
1 of 24
Download now
Downloaded 35 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
More Related Content
PPT
2012年javaメモリリーク
torutk
PDF
Javaアプリケーションサーバ 構築・運用の勘所
Takahiro YAMADA
PDF
20140128 tel@cafe selenium編
SHIFT Inc.
PDF
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
johgus johgus
PDF
JenkinsとjMeterで負荷テストの自動化
Satoshi Akama
PDF
GUI自動テストの保守性を高めるには
Nozomi Ito
PPTX
Stac2014 石川
Tatsuya Ishikawa
PDF
継続的デリバリー読書会 第 7 章 コミットステージ
Yasutomo Arai
2012年javaメモリリーク
torutk
Javaアプリケーションサーバ 構築・運用の勘所
Takahiro YAMADA
20140128 tel@cafe selenium編
SHIFT Inc.
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
johgus johgus
JenkinsとjMeterで負荷テストの自動化
Satoshi Akama
GUI自動テストの保守性を高めるには
Nozomi Ito
Stac2014 石川
Tatsuya Ishikawa
継続的デリバリー読書会 第 7 章 コミットステージ
Yasutomo Arai
What's hot
(20)
KEY
Play with Playframework
Takafumi Yoshida
PPTX
ノンプログラマのためのSelenium de DDTはじめの一歩
Satsuki Urayama
PDF
Stac2013 opening-koukai
K O
PDF
JavaOne2013報告会 JavaFX Update
Takashi Aoe
PDF
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
PDF
Awsで実現するseleniumテスト高速術
finoue
PDF
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
Takuma SHIRAISHI
PDF
Jmeter20120421
hatakyo
PDF
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
Yoshitaka Kawashima
PPTX
EMTEを使って自動化の費用対効果をわかりやすく表現する
JYERUEY
PDF
Azureを使って手軽にブラウザテストの自動化をはじめよう
Naoya Kojima
PDF
大規模な負荷でもドキドキしない為のJava EE
Taiichilow Nagase
PDF
デプロイメントパイプラインって何?
ke-m kamekoopa
PDF
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
PPTX
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
PPTX
システムテスト自動化標準ガイド 5章発表資料
Masatoshi Itoh
PDF
20160215 04 java ee7徹底入門 jbatch
Jun Inose
PPTX
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
PDF
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
PDF
事例から見るテスト自動化のポイント
Hiroshi Maekawa
Play with Playframework
Takafumi Yoshida
ノンプログラマのためのSelenium de DDTはじめの一歩
Satsuki Urayama
Stac2013 opening-koukai
K O
JavaOne2013報告会 JavaFX Update
Takashi Aoe
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
Awsで実現するseleniumテスト高速術
finoue
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
Takuma SHIRAISHI
Jmeter20120421
hatakyo
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
Yoshitaka Kawashima
EMTEを使って自動化の費用対効果をわかりやすく表現する
JYERUEY
Azureを使って手軽にブラウザテストの自動化をはじめよう
Naoya Kojima
大規模な負荷でもドキドキしない為のJava EE
Taiichilow Nagase
デプロイメントパイプラインって何?
ke-m kamekoopa
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
reg-suitとQA Wolfを活用したVisual Regression Test
Kazuyuki Tsuzisaki
システムテスト自動化標準ガイド 5章発表資料
Masatoshi Itoh
20160215 04 java ee7徹底入門 jbatch
Jun Inose
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
事例から見るテスト自動化のポイント
Hiroshi Maekawa
Ad
Similar to Javaパフォーマンスチューニング基礎
(20)
PDF
運用に効く!JVMオプション三選
Kazuhiro Oinuma
PDF
HeapStats: Introduction and Technical Preview
Yuji Kubota
PDF
[AC06] クラウド・ネイティブなスケーラブル・アプリ開発のために~12 Factor App on Kubernetes on Azure
de:code 2017
PPTX
Cloud Native Application on DEIS by using 12 factor
Yoshio Terada
PDF
Osc2013 spring OpenStackで実現する分散ストレージ「Swift」とプライベートクラウド
Seiichiro Ishida
PDF
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
PDF
Eight meets AWS
Tetsuya Mase
PPTX
20161129_npstudy_JunosAutomation
Tatsuya Naganawa
PPTX
Java EE パフォーマンスTips #glassfish_jp
Norito Agetsuma
PPTX
HeapStatsのデモ (Java The Night)
Yasumasa Suenaga
PPTX
Introduction to GraalVM and Native Image
Koichi Sakata
PDF
JJUG CCC 2017 Spring LT about JPA
Naoya Kojima
PDF
Asakusa バッチの運用を支える技術
KinebuchiTomo
PDF
JVMの中身を可視化してみた
Kengo Toda
PPTX
ななめ45°から見たJavaOne
AdvancedTechNight
PDF
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
PDF
Mbed2013
lynxeyed
PDF
Data Engineering at VOYAGE GROUP #jawsdays
Kenta Suzuki
PDF
Data Engineering at VOYAGE GROUP #jawsdays
VOYAGE GROUP
PPTX
Lt talk 2017_0912
Kenta Togashi
運用に効く!JVMオプション三選
Kazuhiro Oinuma
HeapStats: Introduction and Technical Preview
Yuji Kubota
[AC06] クラウド・ネイティブなスケーラブル・アプリ開発のために~12 Factor App on Kubernetes on Azure
de:code 2017
Cloud Native Application on DEIS by using 12 factor
Yoshio Terada
Osc2013 spring OpenStackで実現する分散ストレージ「Swift」とプライベートクラウド
Seiichiro Ishida
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Eight meets AWS
Tetsuya Mase
20161129_npstudy_JunosAutomation
Tatsuya Naganawa
Java EE パフォーマンスTips #glassfish_jp
Norito Agetsuma
HeapStatsのデモ (Java The Night)
Yasumasa Suenaga
Introduction to GraalVM and Native Image
Koichi Sakata
JJUG CCC 2017 Spring LT about JPA
Naoya Kojima
Asakusa バッチの運用を支える技術
KinebuchiTomo
JVMの中身を可視化してみた
Kengo Toda
ななめ45°から見たJavaOne
AdvancedTechNight
Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
Tomoharu ASAMI
Mbed2013
lynxeyed
Data Engineering at VOYAGE GROUP #jawsdays
Kenta Suzuki
Data Engineering at VOYAGE GROUP #jawsdays
VOYAGE GROUP
Lt talk 2017_0912
Kenta Togashi
Ad
More from Hiroyuki Ohnaka
(20)
PDF
remote Docker over SSHが熱い
Hiroyuki Ohnaka
PDF
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
Hiroyuki Ohnaka
PDF
Remote Development with Visual Studio Code & A clean dev env, working every ...
Hiroyuki Ohnaka
PDF
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
Hiroyuki Ohnaka
PDF
「WindowsデスクトップでWeb開発 改訂版」サンプル
Hiroyuki Ohnaka
PDF
Mackerelの薄い本
Hiroyuki Ohnaka
PDF
Microsoft DocsにContributeした話
Hiroyuki Ohnaka
PDF
Azure functions+typescript
Hiroyuki Ohnaka
PDF
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
Hiroyuki Ohnaka
PDF
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
Hiroyuki Ohnaka
PDF
仮想通貨始めました~GethではじめるEthereum~
Hiroyuki Ohnaka
PDF
錬金術MeetUpへのお誘い
Hiroyuki Ohnaka
PDF
Mackerelではじめる お手軽サーバー監視
Hiroyuki Ohnaka
PDF
「GebとSpockではじめるシステムテスト自動化」
Hiroyuki Ohnaka
PDF
TDDはじめて物語Second Season(updated)
Hiroyuki Ohnaka
PDF
TDDはじめて物語 Second Season #tddbc
Hiroyuki Ohnaka
PDF
XP祭り2017 LT 「DevOps再考」(改題)
Hiroyuki Ohnaka
PDF
JDK9の真の目玉機能はこれだ!
Hiroyuki Ohnaka
PDF
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Hiroyuki Ohnaka
PDF
「すいーとみゅーじっく」のできるまで
Hiroyuki Ohnaka
remote Docker over SSHが熱い
Hiroyuki Ohnaka
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
Hiroyuki Ohnaka
Remote Development with Visual Studio Code & A clean dev env, working every ...
Hiroyuki Ohnaka
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
Hiroyuki Ohnaka
「WindowsデスクトップでWeb開発 改訂版」サンプル
Hiroyuki Ohnaka
Mackerelの薄い本
Hiroyuki Ohnaka
Microsoft DocsにContributeした話
Hiroyuki Ohnaka
Azure functions+typescript
Hiroyuki Ohnaka
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
Hiroyuki Ohnaka
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
Hiroyuki Ohnaka
仮想通貨始めました~GethではじめるEthereum~
Hiroyuki Ohnaka
錬金術MeetUpへのお誘い
Hiroyuki Ohnaka
Mackerelではじめる お手軽サーバー監視
Hiroyuki Ohnaka
「GebとSpockではじめるシステムテスト自動化」
Hiroyuki Ohnaka
TDDはじめて物語Second Season(updated)
Hiroyuki Ohnaka
TDDはじめて物語 Second Season #tddbc
Hiroyuki Ohnaka
XP祭り2017 LT 「DevOps再考」(改題)
Hiroyuki Ohnaka
JDK9の真の目玉機能はこれだ!
Hiroyuki Ohnaka
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Hiroyuki Ohnaka
「すいーとみゅーじっく」のできるまで
Hiroyuki Ohnaka
Javaパフォーマンスチューニング基礎
1.
JVM パフォーマンスチューニング 基礎 2013/12/14 せとあずさ♂
2.
• • • • • • • • • @setoazusa http://blog.fieldnotes.jp/ #tddbc 横浜(2011~2013) #java_ja #yokohamarb とはいえ、メインはJava 最近、MacからWindows8に乗り換えました チャンキヨかわいいよチャンキヨ miwaは自慢の妹です
3.
おことわり • 今日は「JVMパフォーマンスチューニン グ基礎」というお題ですが... – →HotSpot
VMに限定した話になります m(__)m
4.
アジェンダ • • • • パフォーマンスチューニングの原則 ツールあれこれ(小ネタ) サーバーVMとクライアントVM エルゴノミクス
5.
パフォーマンスチューニングの原 則 • 測定する
6.
測定に使用するツール • サーバー側 – VisualVM –
jstat – sysstat / vmstat – SQLのログ(呼び出し回数、スロークエリー) • クライアント側 – Jmeter – ab – gatling
7.
(小ネタ)visualvmでリモートサー バーのヒープの状態を監視する。 • こんな感じのpolicyファイルを書いて、 grant codebase
"file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; }; • jstatdを起動します。 C:¥usr>jstatd.exe -J-Djava.security.policy=jstatd.al l.policy -J-Djava.rmi.server.hostname=192.168.0.4
8.
後はVisualVMでリモートホストを追加すればOK。
9.
(小ネタ)jstatの出力にタイムスア ンプをつける p=`ps aux |grep
tomcat |grep うにゃう にゃ|grep java |awk '{print $2}'`; jstat -gcutil -h10 $p 10000 | awk '{print strftime("%H:%M:%S"), $0}' >>jstat.log
10.
クライアントVMとサーバーVM • クライアントVM – 起動時間を短縮し、メモリサイズを縮小する ように調整されています。 •
サーバーVM – プログラム実行速度が最大になるように設計 されています。
11.
• 64bitのHotSportVMには、サーバーVMし か呼び出しオプションがありません。 (-clientを指定してもサーバVMが起動し ます) • じゃあ、サーバーVMしか実装がいないの かというと、そうではなくて...
12.
• サーバーVMで、起動時のオーバーヘッド を短縮する方法→階層型コンパイル – JDK7u1
JDK6u25 から導入 – 最初はクライアントVMでコンパイルして、呼 び出し回数に応じてサーバーVMに切り替える – -XX:+TieredCompilation XX:TieredStopAtLevel=1
13.
• 例:Tomcatの起動時間 Tomcat7.0.47 JDK7u45(64bit) –
指定なし → 1510ms – -XX:+TieredCompilation XX:TieredStopAtLevel=1 →602ms • 更に、バイトコードの検証をスキップする と... – -XX:+TieredCompilation XX:TieredStopAtLevel=1 -Xverify:none →556ms
14.
サーバーVMとクライアントVMの 違い • ヒープ容量を指定しなかった場合のデ フォルト値 – クライアントVM→64MB –
サーバーVM→ 物理メモリーの 1/4 か、1GB かの小さい方。 • また、パフォーマンス関係のパラメーターは、統 計情報に応じて、動的に変化します。(エルゴノミ クス)
15.
• じゃあ、エルゴノミクス任せにすればい いのかというと...
16.
(おさらい)世代別GC
17.
Old→2.6GB Eden→1.3GB S0→450MB S1→450MB
18.
Let’sチューニング • ヒープのパラメーターを調整 • ただし、細かい値の設定はエルゴノミク スに任せる
19.
-Xms ...ヒープの初期容量 -Xmx ...ヒープの最大容量 -XX:NewSize
... new領域のサイズ -XX:NewRatio new領域とold領域の比率 -XX:SurvivorRatio ...EdenとSurvivorの比 率 • -XX:targetSurvivorRatio ... Survivorが一 杯になったと判定される閾値 • -XX:maxTenuringThreshold ... new領域か らold領域に移動する閾値 • • • • •
20.
• フルGCの発生をどれだけ回避するかが鍵。 – 但し、ライフサイクルの長いオブジェクトの 存在や、定期フルGCのこともあるので、フル GCを起こさないチューニングというのは非現 実的
21.
• CPUのリソースを潤沢に使えるなら、コ ンカレントGCの使用も手でしょう。 • 但し、従前のGCとコンカレントGCでは GC関連のデフォルトパラメーターが異な るので、そこには注意。
22.
さらに注意しなければならないのは、コンカレントGCオプション 「-XX:+UseConcMarkSweepGC」を使用した場合、New世代領 域の オプションデフォルト値が「-XX:SurvivorRatio=1024 XX:MaxTenuringThreshold=0」に自動設定されるという点です。 http://wallclimb.com/2009/10/12/%E3%82%B3%E3%83%B3%E3%8 2%AB%E3%83%AC%E3%83%B3%E3%83%88gc%E3%81 %AE%E6%B3%A8%E6%84%8F%E7%82%B9/ →この記述自体は
obsoleted • jdk7u45の場合、 MaxTenuringThreshold がコ ンカンレントGCの場合は8(通常は15)
23.
(小ネタ)mod_proxy_ajpの落とし 穴
24.
(小ネタ)ヒープリークの調査方法 • ストレスツールを使って、一定の負荷を かけながら、定期的にヒープの統計情報 を取得する • http://qiita.com/setoazusa/items/ee0 a7d795c2687b80817
Download