Scala on JVM をプロファイリングするツールの紹介

B7024e7cba9e352573da77759a8719de?s=47 KAWACHI Takashi
September 09, 2017

Scala on JVM をプロファイリングするツールの紹介

Scala 関西 Summit 2017

B7024e7cba9e352573da77759a8719de?s=128

KAWACHI Takashi

September 09, 2017
Tweet

Transcript

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

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

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

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

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

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

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

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

  9. JVM 内 HPROF Java Flight Recorder [商用*] JDK にバンドル JConsole

    (jconsole) VisualVM (jvisualvm) Java Mission Control (jmc) [商用*] 他の製品 JProfiler [商用] YourKit [商用] XRebel [商用] etc. 9 / 13
  10. 遅いプログラムデモ: フィボナッチサービ ス フィボナッチ数列 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
  11. まとめ 性能問題へ対応するにはボトルネック特定することが必要 大きな視点から小さな視点へ 様々な視点で メトリクス Distributed tracing、APM Scala コードが問題のときは JVM

    プロファイラ 気軽に使えるもの(JDKバンドル、無償)もある ツールを適切に使って問題に立ち向かおう 11 / 13
  12. 速報! http://mail.openjdk.java.net/pipermail/discuss/2017-September/004281.html よ り抜粋 mark.reinhold@oracle.com 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
  13. We're hiring 広告代理業支援システム開発、漫画アプリ(GANMA!)開発 DDD + Scala で実装 裁量労働制とスクラムで働きやすい環境 充実のアドバイザー陣 麻植泰輔さん

    加藤潤一さん 13 / 13