9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OSSとなったJava Mission Control 7.0.0 Early-Accessを触ってみる:導入編

Last updated at Posted at 2018-08-06

はじめに

Java Misstion Control (JMC) のEA版がついに出ました!
JMCは、Javaアプリケーションの稼働詳細を分析するためのツールです。
JMCは、業務利用するには、Oracle 有償バージョン (Product Editions)を利用しなければなりませんでした。
Java Flight Recorder(JFR)とセットで利用することがほとんどなのですが、まぁ…有償版を使っていない私にとっては、縁が無いものであったのですが、Java 11よりOpenJDK側に組み込まれる予定となっていました。

そして・・・ついに、 JMC 7.0.0 UPLライセンスのEA版が出ました!!!
JMC 7.0.0 EA Builds - http://jdk.java.net/jmc/

JMC builds
These early-access, open-source builds are provided under the UPL .

Oracle JDKの問題で色々とありましたが、こうやって有償機能が使えるようになることは大変喜ばしいです。

試してみる

下記二つを行ってみます。

  • JMXでのリアルタイムモニタリング
  • Java Flight Recorderでの記録、参照

結果からいうと、ちゃんと動きました。

構成

下記と一緒です。私は基本GKEでアプリケーション動かしているので・・・。
GKE+Java環境におけるjvisualvmの利用方法 - https://qiita.com/h-r-k-matsumoto/items/6bd4ba191208745e012b

  +--------+      +-------------------------+     +-----------------------+
  |        |      |                         |     |                       |
  |   PC   | +--> |   GCE: tunnel serever   | +-> |   GKE: applications   |
  |        |      |                         |     |                       |
  +--------+      +-------------------------+     +-----------------------+
  • PC端末でモニタリング。および可視化。GKEアプリケーションが、監視対象となります。
  • PC端末は、Windows 10。GKEは、1.10.5-gke.3。
  • tunnel serverはCentOS 7。

実行するアプリケーション

アプリケーション

実行するアプリケーションは、
 https://github.com/h-r-k-matsumoto/spring-boot-sample/tree/java11
です。※java 11 tagです。

事前準備

JMCのインストール

下記サイトからバイナリをダウンロードします。私の場合は、Windows/x64のexe (sha256:6888816db19c1ff7db9091a623b252ef222e83a3e9ac54dbce8982ff66875042 )
を落とし、ウィザードに従いインストールしました。
http://jdk.java.net/jmc/

特にハマる事はありませんでした。

PC端末でSSH トンネルの作成をする

SSHでトンネル掘ります。PCマシンで下記コマンドを実行します。

> gcloud compute --project xxxxx ssh --zone xxxxx "tunnnel-server"  -- -N -D 7199

PC端末でJMCを起動する。

jmcとコマンドを実行するだけです。スタートメニューにもあります。

JMXでのリアルタイムモニタリング

対象の接続を右クリックし、「JMXコンソールを開始します」をクリックするだけです。
image.png

下記のように、概要、メモリ、スレッド等、 jvisualvm等で閲覧できていた情報 + αの情報を確認することができます。

image.png

繋がりました!

Java Flight Recorderでの記録、参照

対象の接続を右クリックし、[ フライト記録の開始 ] をクリックします。
記録の開始画面が表示されます。とりあえず10分間記録してみます。
image.png

収集結果

計測期間が終わったら画面が表示されます。
まだ見方は分かっていないですがとりあえず無事記録を参照することができました!
これで障害追跡も・・・ものすごく楽になるのかな???

image.png

ハマった所

Proxyの設定は、設定画面からやります。

下記のように起動しても、socksプロトコルのproxyは有効となりません。

jmc -J-DsocksProxyHost=localhost -J-DsocksProxyPort=7199 -J-DsocksNonProxyHosts=

ネットワーク接続設定画面で、下記手順でプロキシの設定を行う必要があります。

image.png

  1. アクティブプロバイダとして「手操作」を選択
  2. SOCKSプロトコルにおいて、ホスト = localhost、ポート = 7199 を入力。

OpenJDK11-JRE-SLIMじゃFlightRecorderは動きません。

openjdk:11-jre-slim のイメージを使っていましたが、Flight Recorderの記録を開始すると、下記エラーが表示されます。
image.png

焦りますね。えっ商用機能・・・?みたいな。
大丈夫です。上記イメージには、必要なライブラリが含まれていないためでした。
openjdk:11-jdk のイメージを使う事で正常に動作するようになります。

参考資料

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?