Slide 1

Slide 1 text

Scala on JVM をプロファイリングする ツールの紹介 2017/9/9 Scala 関西 Summit 2017 1 / 13

Slide 2

Slide 2 text

自己紹介 河内 崇 Twitter @kawachi GitHub @tkawachi 今年の3月に株式会社セプテーニ・オリジナルへ入社 2 / 13

Slide 3

Slide 3 text

セプテーニ・オリジナル Scala関西Summit 2017 Platinum スポンサー 3 / 13

Slide 4

Slide 4 text

「作ったアプリが遅い」 勘でなおす? 4 / 13

Slide 5

Slide 5 text

全体像を把握 (ホスト・プロセス視点) 各ホストのメトリクス(CPU使用率, Disk I/O, ネットワーク) まずは準備不要でできること → ホスト単位のボトルネック特定 5 / 13

Slide 6

Slide 6 text

Distirubed tracing, APM tool (リクエスト視点) 一連の処理で時間のかかっている箇所を特定。 Zipkin (OpenSource) New Relic. DataDog AWS X-Ray etc. 6 / 13

Slide 7

Slide 7 text

Scala で書いた部分が遅かったら (JVM視 点) 時間のかかっているメソッドは? メモリの使用量は? スレッドの状況は? GC の頻度、停止時間は? 7 / 13

Slide 8

Slide 8 text

JVM用プロファイラの出番 8 / 13

Slide 9

Slide 9 text

JVM 内 HPROF Java Flight Recorder [商用*] JDK にバンドル JConsole (jconsole) VisualVM (jvisualvm) Java Mission Control (jmc) [商用*] 他の製品 JProfiler [商用] YourKit [商用] XRebel [商用] etc. 9 / 13

Slide 10

Slide 10 text

遅いプログラムデモ: フィボナッチサービ ス フィボナッチ数列 1, 1, 2, 3, 5, 8, 13, 21, 34, ... fib(0) = 1, fib(1) = 1, fib(n) = fib(n-2) + fib(n-1) Play Framework で実装。 一台構成。 10 / 13

Slide 11

Slide 11 text

まとめ 性能問題へ対応するにはボトルネック特定することが必要 大きな視点から小さな視点へ 様々な視点で メトリクス Distributed tracing、APM Scala コードが問題のときは JVM プロファイラ 気軽に使えるもの(JDKバンドル、無償)もある ツールを適切に使って問題に立ち向かおう 11 / 13

Slide 12

Slide 12 text

速報! http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html よ り抜粋 [email protected] Wed Sep 6 14:49:28 UTC 2017 We'll continue to ship proprietary "Oracle JDK" builds, which include "commercial features" [7] such as Java Flight Recorder and Mission Control [8], under a click-through binary-code license [9]. Oracle will continue to offer paid support for these builds. After JDK 9 we'll open-source the commercial features in order to make the OpenJDK builds more attractive to developers and to reduce the differences between those builds and the Oracle JDK. This will take some time, but the ultimate goal is to make OpenJDK and Oracle JDK builds completely interchangeable. 12 / 13

Slide 13

Slide 13 text

We're hiring 広告代理業支援システム開発、漫画アプリ(GANMA!)開発 DDD + Scala で実装 裁量労働制とスクラムで働きやすい環境 充実のアドバイザー陣 麻植泰輔さん 加藤潤一さん 13 / 13