$30 off During Our Annual Pro Sale. View Details »

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

KAWACHI Takashi
September 09, 2017

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

Scala 関西 Summit 2017

KAWACHI Takashi

September 09, 2017
Tweet

More Decks by KAWACHI Takashi

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  12. 速報!
    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

    View Slide

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

    View Slide