Enabling JMX counters for performance monitoring
JMX を使用して何を監視できますか?
Bitbucket Server 内で JMX カウンタを使用してさまざまな統計情報を監視できます。以下は監視できる統計情報の例です。
スレッド プール
スレッド プール | 説明 | オブジェクト名 |
---|---|---|
IoPumpThreadPool | 外部プロセス IO を処理するスレッド | com.atlassian.bitbucket.thread-pools:name=IoPumpThreadPool |
ScheduledThreadPool | さまざまな複数のスケジュール済みタスクを処理するスレッド プール | com.atlassian.bitbucket.thread-pools:name=ScheduledThreadPool |
EventThreadPool | イベントを @EventListenermethods にディスパッチするスレッド | com.atlassian.bitbucket.thread-pools:name=EventThreadPool |
スレッド プール属性
名前 | 説明 |
---|---|
ActiveCount | アクティブにタスクを実行しているスレッド数の概算を返します。 |
MaximumPoolSize | 最大許容スレッド数を返します。 |
PoolSize | 現在プール内にあるスレッド数を返します。 |
QueueLength | スレッド プールによる実行待ちのタスクの数 |
LargestPoolSize | プール内に同時に存在したスレッドの最大数 |
CompletedTaskCount | 実行が完了したタスクの合計数の概算。タスクおよびスレッドの状態は計算中に動的に変わる場合があるため、返される値はおおよその値ですが、この値が成功呼び出し全体で減ることはありません。 |
リポジトリ (com.atlassian.bitbucket:name=Repositories)
名前 | 説明 |
---|---|
count | Bitbucket Server ですべてのプロジェクトで現在設定されているリポジトリの数 |
Scm 統計 (com.atlassian.bitbucket:name=ScmStatistics)
名前 | 説明 |
---|---|
Pulls | 開始以降、このインスタンスが提供した scm プルの数 |
Pushes | インスタンスの開始以降、このインスタンスが受信した scm プッシュの数 |
チケット統計
Bitbucket Server は、システムがリクエストで過負荷状態になることを防ぐためのバックプレッシャーの作成メカニズムとして "チケット" を使用します。Bitbucket Server で使用されるチケットには、ホスティング チケットとコマンド チケットの 2 種類があります。
ホスティング チケット (com.atlassian.bitbucket:name=HostingTickets): 同時に実行される可能性がある SCM ホスティング操作 (HTTP または SSH 経由のプッシュおよびプル) の数を制限します。
コマンド チケット (com.atlassian.bitbucket:name=CommandTickets): 同時に実行される可能性がある git diff、git blame、git rev-list などの SCM コマンドの数を制限します。
Bitbucket Server では、各チケット タイプごとに以下のメトリックをサポートします。
名前 | 説明 |
---|---|
Available | 取得に利用できるチケットの数 (数値が小さいほど負荷が大きくなります) |
LastRejection | 前回拒否されたチケットのタイムスタンプ、チケットが拒否されていない場合は null |
名前 | チケット バケットの名前 ("scm-command" または "scm-hosting") |
OldestQueuedRequest | キューに最初に追加されたリクエストが開始を待機した時間のタイムスタンプ、キューにリクエストがない場合は null |
QueuedRequests | 利用可能なチケットを現在待機しているリクエストの数 |
合計 | バックプレッシャーが適用されるまでに同時に取得できるチケットの最大数 |
Used | 取得されたチケットの数 (数値が大きいほど負荷が大きくなります) |
イベント統計 (com.atlassian.bitbucket:name=EventStatistics)
名前 | 説明 |
---|---|
DispatchedCount | 実行されたリスナー コールバックの合計数。10 リスナーに配信されるイベントが 10 ディスパッチとカウントされます |
LastRejection | 前回のイベントが拒否された日付、イベントが拒否されていない場合は null |
PublishedCount | Total number of events delivered. An event that is delivered to 10 listeners counts a 1 event |
QueueCapacity | イベントが却下される前にキューに追加できるイベント コールバックの最大数 |
QueueLength | キューに追加されているがまだディスパッチされていないイベント コールバックの数 |
RejectedCount | イベント キューが満杯だったためにディスパッチされなかったイベントの合計数 |
RemainingQueueCapacity | イベントが却下される前にキューに追加できるイベント コールバックの残りの数 |
クラスタ ロック統計情報 (com.atlassian.bitbucket:name=ClusterLocks)
名前 | 説明 |
---|---|
LockedCount | このノードが現在保持しているクラスタ ロックの数 |
QueuedThreadCount | このノード上の、現在ロックを待機してブロックされているスレッド数 |
TotalAcquiredCount | このノードの起動以降、ノードでクラスタ ロックが取得された合計回数 |
TotalAcquireErrorCount | このノードの起動以降、ノードでクラスタ ロックを取得しようとしているときに例外がスローされた回数 |
TotalAcquireTimeMillis | このノードで任意のスレッドがロックの取得に費やしたミリ秒単位の合計時間 (ロックが使用可能になるまで待機しているブロック時間を含む) |
TotalReleasedCount | このノードの起動以降、ノードでクラスタ ロックが解放された合計回数 |
TotalReleaseErrorCount | このノードの起動以降、ノードでクラスタ ロックの開放中に例外がスローされた合計回数 |
SSH セッション統計 (com.atlassian.bitbucket:name=SshSessions)
名前 | 説明 |
---|---|
ActiveSessionCount | 現在アクティブな SSH セッションの数 |
MaxActiveSessionCount | 前回の起動以降、同時にアクティブな SSH セッションの最大数 |
SessionClosedCount | 前回の起動以降、クローズされた SSH セッションの合計数 |
SessionCreatedCount | 前回の起動以降、作成された SSH セッションの合計数 |
SessionExceptionCount | SSH コマンド実行で例外がスローされたために終了した SSH セッションの合計数 |
サードパーティ ライブラリ属性
Bitbucket Server は、多数のサードパーティ ライブラリから JMX 属性を開示します。以下の一覧は、運用の観点で特に興味深い属性のサンプルです。
HikariCP - (com.zaxxer.hikari:type=Pool (bitbucket))
名前 | 説明 |
---|---|
ActiveConnections | アクティブ接続数 (使用中) |
IdleConnections | アイドル接続数 |
ThreadsAwaitingConnection | 接続を待機しているスレッドの数 (利用可能なすべての接続が使用中の場合) |
TotalConnections | 合計接続数 |
Hibernate - (org.hibernate.core:sessionFactory=bitbucket.core,serviceRole=org.hibernate.stat.Statistics,serviceType=org.hibernate.stat.internal.ConcurrentStatisticsImpl)
名前 | 説明 |
QueryCacheHitCount | キャッシュから正常に取得されたキャッシュ済みクエリのグローバル数 |
QueryCacheMissCount | キャッシュ内で検出されなかったキャッシュ済みクエリのグローバル数 |
SecondLevelCacheHitCount | キャッシュから正常に取得されたキャッシュ可能エンティティ / コレクションのグローバル数 |
SecondLevelCacheMissCount | キャッシュ内で検出されず、データベースからロードされたキャッシュ可能エンティティ / コレクションのグローバル数 |
Bitbucket Server 内での JMX MBeans の公開
Bitbucket Server で JMX を使用した特定の統計の公開を有効化するには、以下を実行する必要があります。
- Locate and open the
bitbucket.properties
file in the<Bitbucket home directory>
/shared
directory.ファイルにこのプロパティを追加します。
jmx.enabled=true
- ファイルを保存して閉じます。
- JMX モニタリングに安全にアクセスするために、JMX パスワード ファイルを作成します。
- Modify the
setenv.sh
file to enable Bitbucket Server to expose JMX Mbeans.
これらの変更は、Bitbucket Server が再起動されるまで反映されません。
JMX パスワード ファイルのセットアップ
JMX パスワード ファイルをセットアップして、JMX モニタリングに安全にアクセスする方法
Create a file named
jmx.access.
このファイルには、パスワード情報が含まれます。ファイルが、Bitbucket Server を実行するセキュアなユーザーからのみ読み取り可能であることを確認します。ただし、Bitbucket Server ユーザーがファイルを読み取ることができない場合、Bitbucket Server の起動が失敗する点にご注意ください。
Edit the
jmx.access
file to include this property and save the file.monitorRole=<password>
If you wish to use a username other than
monitorRole
orcontrolRole
you will need to modify the jmxremote.access file located in the /lib/management/
directory of the installed Java.
Bitbucket Server 環境ファイルの変更
To modify the setenv.sh
(for Windows setenv.bat
) files to enable JMX monitoring for Bitbucket Server
Within the
bin
directory, locate the filesetenv.sh
(for Windowssetenv.bat
) and change these properties.JMX_REMOTE_AUTH=password JMX_REMOTE_PORT=3333 RMI_SERVER_HOSTNAME=-Djava.rmi.server.hostname=<hostname> JMX_PASSWORD_FILE=<path>/jmx.access
- Bitbucket Server を再起動します。
Bitbucket Server が Windows サービスとして実行されている場合に JMX MBeans を公開する
Bitbucket Server が Windows サービスとして実行されている場合に JMX MBeans を公開する方法
- Bitbucket Server サービスを停止します。
コマンド ライン プロンプトを開いて以下を入力します。
cmd
Navigate to the Bitbucket Server
bin
directory.cd <Bitbucket Server installation dir>\bin
次のコマンドを実行します。
tomcat8w //ES//AtlassianBitbucket Server
表示されたウィンドウで [Java] タブをクリックすると、現在の起動オプションの一覧が表示されます。[Java Options:] フォームで、値を入力します。
-Dcom.sun.management.jmxremote.port=<JMX_REMOTE_PORT> -Djava.rmi.server.hostname=<hostname> -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=<JMX_PASSWORD_FILE>
パスワード ファイルの所有者が、Bitbucket Server を実行するセキュア ユーザーであることを確認します。Bitbucket Server ユーザーがファイルを読み取ることができない場合、Bitbucket Server の起動が失敗します。
<> 文字内の値を置き換えます。
JMX_REMOTE_PORT=3333 JMX_PASSWORD_FILE=<path>\jmx.access
Bitbucket Server サービスを再起動します。
JMX が正しく構成されていることを確認する
これらの手順では、JMX が正しく設定されていることをテストするのに JConsole を使用します。JConsole は、Oracle JDK に同梱されているユーティリティです。
jconsole ユーティリティを起動するには、コマンド ライン プロンプトから以下を入力します。
jconsole
同様の接続設定で新しい JConsole 接続を作成します。
bitbucket 監視する Bitbucket Server インスタンスのホスト名 3333
以前に構成した JMX ポート番号。
username, password values configured within the JMX password file jmx.access
.接続をクリックします。
正しく設定されている場合、これらのプロパティが表示されます。
com.atlassian.bitbucket |
|
com.atlassian.bitbucket.thread-pools |
|
パフォーマンス ダッシュボードの例
このダッシュボードは、Oracle JDK (1.7u40 以降) に同梱されている Java Mission Control を使用して生成されました。詳細については、ご利用の JMX クライアントに同梱しているドキュメントを参照してください。
SSL を使用するように JMX を設定する
You can find information about the options for configuring JMX to use SSL in the setenv files. Comprehensive documentation is available from Oracle.