Synchrony クラスターのヘルスを監視する方法

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: Data Center のみ - この記事は、Data Center プラットフォームのアトラシアン製品にのみ適用されます。

この KB は Data Center バージョンの製品用に作成されています。Data Center 固有ではない機能の Data Center KB は、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。

*Fisheye および Crucible は除く

目的

Synchrony の自己管理モードには、読み込むことができるシステム プロパティに関していくつかの制限があります。これは、次の機能リクエストでカバーされています。

このシナリオでは、Synchrony クラスターの状態を監視するためにさまざまなソリューションを活用する必要があります。この記事ではそれらのいくつかを取り上げます。

この制限はバージョン 7.20 で修正されました。これにより、synchrony-args.properties ファイルを使用して GC ログ パラメータを使用できるようになりました。以下で説明している内容はこれらの新しいバージョンでも引き続き有効ですが、7.19 までのバージョンにおいてより有益です。

回避策

オプション 1. Hazelcast ヘルス モニター

Confluence クラスタおよび Synchrony クラスタはどちらも Hazelcast を使用しており、これには以下の機能が含まれます。

これにより、次の条件のいずれかが満たされると、追加の診断がログに出力されます。

  • メモリ使用量 >70 %
  • CPU使用率 >70 %

閾値は、ドキュメントに記載されているシステム プロパティを使用して設定できます。あるいは、ログ レベルを NOISY に設定して、メッセージが 20 秒ごとに出力されるようにすることもできます (間隔も設定可能)。

  1. <Confluence-local-home>/synchrony-args.properties ファイルを編集します
  2. 最下部に次の行を追加します

    hazelcast.health.monitoring.level=NOISY
  3. 保存して変更したノードにアクセスします
  4. 共同編集管理ページで Synchrony を再起動します
  5. すべてのノードで繰り返します

デフォルトの閾値を満たしている場合、または NOISYログ レベルを有効にした場合、次のメッセージが atlassian-synchrony.log ファイルに出力されます。

INFO [hz._hzInstance_1.HealthMonitor] [hazelcast.internal.diagnostics.HealthMonitor] [1.1.1.1]:5701 [confluence-Synchrony] [3.11.4] processors=8, physical.memory.total=0, physical.memory.free=0, swap.space.total=0, swap.space.free=0, heap.memory.used=1.6G, heap.memory.free=449.5M, heap.memory.total=2.0G, heap.memory.max=2.0G, heap.memory.used/total=78.03%, heap.memory.used/max=78.03%, minor.gc.count=264, minor.gc.time=20332ms, major.gc.count=0, major.gc.time=0ms, load.process=0.00%, load.system=0.00%, load.systemAverage=13.72, thread.count=109, thread.peakCount=233, cluster.timeDiff=0, event.q.size=0, executor.q.async.size=0, executor.q.client.size=0, executor.q.client.query.size=0, executor.q.client.blocking.size=0, executor.q.query.size=0, executor.q.scheduled.size=0, executor.q.io.size=0, executor.q.system.size=0, executor.q.operations.size=0, executor.q.priorityOperation.size=0, operations.completed.count=6869, executor.q.mapLoad.size=0, executor.q.mapLoadAllKeys.size=0, executor.q.cluster.size=0, executor.q.response.size=0, operations.running.count=0, operations.pending.invocations.percentage=0.00%, operations.pending.invocations.count=0, proxy.count=0, clientEndpoint.count=0, connection.active.count=2, client.connection.count=0, connection.count=2

これには、割り当てメモリー、使用メモリ、GC 数、メッセージの GC 回数など、多くの有益なデータが含まれます。以下を検索して確認してください。

  • Hazelcast.Internal.Diagnostics.HealthMonitor (Confluence 7+ を実行している場合)
  • heap.memory.used  または、Confluence 6 を実行している場合、出力されるその他の指標

オプション 2. 実行時に GC ロギングを有効にする

この特定のオプションの場合、JDK には、Java プロセスの実行中にこれらの引数の一部を変更できるユーティリティ (jinfo) が付属しており再起動しなくても有効にできるため、JDK を使用する必要があります。以下の手順で、実行時に jinfo を使用して、Synchrony サービスのガベージ コレクション (GC) ログを有効にできます。

この回避策は Java 8 でのみ機能し、Java 11 では機能しません


  1. まず、次のコマンドを使用して、Synchrony のプロセス ID (ここでは $SYNCHRONY_PID と呼びます) を確認します。

    SYNCHRONY_PID=`jcmd  | grep synchrony.core | cut -d ' ' -f 1`
  2. $SYNCHRONY_PID を使用して、ターミナルで次のコマンドを引き続き実行します。

    jinfo -flag +PrintGC $SYNCHRONY_PID
    jinfo -flag +PrintGCDetails $SYNCHRONY_PID
    jinfo -flag +PrintGCDateStamps $SYNCHRONY_PID
    jinfo -flag +PrintGCID $SYNCHRONY_PID

    パラメーターは変更できないため、残念ながら GC ロギング専用の GC ログファイルは指定できません。GC ログは <Confluence-Home/logs/atlassian-synchrony.log> ファイルに追加されます。

  3. 次に、次のコマンドを実行して、JVM フラグが実際にSynchrony の JVM に適用されているかどうかを確認します。

    jcmd $SYNCHRONY_PID VM.flags

jinfo を介して行われた変更は永続的ではないことに注意してください。つまり、アプリケーションを再起動すると、起動スクリプトによって設定されたデフォルト値に戻ります。再起動後も変更を有効にしたい場合は、それに応じて起動スクリプトを変更する必要があります。

オプション 3. Java Flight Recorder

もう 1 つの選択肢は、Java Flight 記録を生成することです。この記録は、後で JDK Mission Control アプリ を使用して確認できます。記録を生成するには、該当する Java のドキュメントを確認してください。

GC ロギングを有効にできないのと同じ制限により、システム プロパティを使用して記録を作成することはできません。代わりに、jcmd を使用してください。これは、この目的において JDK が必要であることを意味します。例:

$ jcmd <Synchrony-pid> JFR.start
$ jcmd <Synchrony-pid> JFR.dump filename=recording.jfr

(info) コマンド ラインで jcmd を実行すると、サーバー上で実行されているすべての Java プロセスが一覧表示されます。Synchrony プロセスを見つけるのに便利です。

JDK の Mission Control を使用して記録を確認できます。

(warning) Oracle JDK を使用している場合、 Java Flight Recorder を本番環境で使用するには商用ライセンスが必要です


最終更新日: 2023 年 1 月 26 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.