<infinispan>
<cache-container statistics="true">
<metrics gauges="true" histograms="false" name-as-tags="true" />
</cache-container>
</infinispan>
これは、メトリクスを使用したトラブルシューティングガイドの一部です。
Infinispan はエンドポイント /metrics
でメトリクスを公開します。デフォルトでは、これらは有効になっています。属性 name-as-tags
を有効にすることを推奨します。これにより、メトリクス名がキャッシュ名に依存しなくなります。
Infinispan サーバーでメトリクスを構成するには、以下の XML に示すように有効にするだけです。
<infinispan>
<cache-container statistics="true">
<metrics gauges="true" histograms="false" name-as-tags="true" />
</cache-container>
</infinispan>
Kubernetes の Infinispan Operator を使用すると、カスタム構成を持つ ConfigMap
を使用してメトリクスを有効にできます。以下に例を示します。
apiVersion: v1
kind: ConfigMap
metadata:
name: cluster-config
data:
infinispan-config.yaml: >
infinispan:
cacheContainer:
metrics:
gauges: true
namesAsTags: true
histograms: false
apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
name: infinispan
annotations:
infinispan.org/monitoring: 'true' (1)
spec:
configMapName: "cluster-config" (2)
1 | デプロイメントの監視を有効にします |
2 | カスタム構成を持つ ConfigMap 名を設定します。 |
追加情報は、Infinispan ドキュメント および Infinispan operator ドキュメントにあります。
このセクションでは、Infinispan ノード間の通信を監視し、ネットワークの問題を特定するのに役立つメトリクスについて説明します。
グローバルタグ
cluster=<name>
クラスタ名。複数のクラスタからのメトリクスが収集されている場合、このタグはそれらがどのクラスタに属しているかを識別するのに役立ちます。
node=<node>
メトリクスをレポートしているノードの名前。
|
以下のメトリクスは、リモートリクエストの応答時間を公開します。応答時間は 2 つのノード間で測定され、処理時間を含みます。すべてのリクエストはこれらのメトリクスによって測定され、応答時間はクラスタのライフサイクルを通じて安定している必要があります。
正常なクラスタでは、応答時間は安定したままです。応答時間の増加は、クラスタの劣化または負荷の高いノードを示している可能性があります。 |
タグ
node=<node>
送信側ノードを識別します。
target_node=<node>
受信側ノードを識別します。
メトリクス | 説明 |
---|---|
|
受信側ノードへの同期リクエストの数。 |
|
受信側ノードへの同期リクエストの合計時間 |
ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットを収集および公開すると、デプロイメントのパフォーマンスに悪影響を与える可能性があります。 |
Infinispan によって受信および送信されたすべてのバイトは、これらのメトリクスによって収集されます。また、ハートビートなどのすべての内部メッセージもカウントされます。これらにより、各ノードで現在使用されている帯域幅を計算できます。
メトリクス名は、使用中の JGroups トランスポートプロトコルによって異なります。 |
メトリクス | プロトコル | 説明 |
---|---|---|
|
|
ノードによって受信されたバイトの合計数。 |
|
|
|
|
|
|
|
|
ノードによって送信されたバイトの合計数。 |
|
|
|
|
|
スレッドプールのサイズを監視することは、ノードが高負荷状態にあることを示す良い指標です。受信したすべてのリクエストは処理のためにスレッドプールに追加され、いっぱいになるとリクエストは破棄されます。再送信メカニズムは、リソース使用量の増加を伴う信頼性の高い通信を保証します。
正常なクラスタでは、スレッドプールが最大サイズ(デフォルトでは 200 スレッド)に近づくことはありません。 |
スレッドプールのメトリクスは、仮想スレッドでは利用できません。仮想スレッドは、OpenJDK 21 で実行している場合はデフォルトで有効になっています。 |
メトリクス名は、使用中の JGroups トランスポートプロトコルによって異なります。デフォルトのトランスポートプロトコルは TCP です。 |
メトリクス | プロトコル | 説明 |
---|---|---|
|
|
スレッドプール内の現在のスレッド数。 |
|
|
|
|
|
|
|
|
プール内で同時に存在したスレッドの最大数。 |
|
|
|
|
|
フロー制御は、メッセージ送信者のレートを、時間経過とともに最も遅い受信者のレートに調整します。これはクレジットベースのシステムを通じて実装されており、各送信者は送信時にクレジットを減らします。送信者はクレジットが 0 未満になるとブロックされ、受信者から補充メッセージを受信したときにのみメッセージの送信を再開します。
以下のメトリクスは、ブロックされたメッセージの数と平均ブロック時間を示しています。値がゼロ以外の場合、受信者が過負荷状態であり、クラスタのパフォーマンスを低下させている可能性があります。
各ノードには、ユニキャストメッセージ用の UFC
とマルチキャストメッセージ用の MFC
の 2 つの独立したフロー制御プロトコルがあります。
正常なクラスタは、すべてのメトリクスに対してゼロの値を示します。 |
メトリクス | 説明 |
---|---|
|
フロー制御がユニキャストメッセージの送信者をブロックした回数。 |
|
ユニキャストメッセージを送信しようとしたときにフロー制御でブロックされた平均時間(ミリ秒)。 |
|
フロー制御がマルチキャストメッセージの送信者をブロックした回数。 |
|
マルチキャストメッセージを送信しようとしたときにフロー制御でブロックされた平均時間(ミリ秒)。 |
JGroups はメッセージの信頼性の高い配信を提供します。メッセージがネットワーク上でドロップされた場合、または受信者がメッセージを処理できない場合、再送信が必要です。再送信はリソース使用量を増やし、通常はシステムが過負荷状態になっていることを示す兆候です。
Random Early Drop (RED) は送信者キューを監視します。キューがほぼいっぱいになると、メッセージはドロップされ、再送信が発生する必要があります。これにより、スレッドが満杯の送信者キューによってブロックされるのを防ぎます。
正常なクラスタは、すべてのメトリクスに対してゼロの値を示します。 |
メトリクス | 説明 |
---|---|
|
再送信されたメッセージの数。 |
|
送信者によってドロップされたメッセージの合計数。 |
|
送信者によってドロップされたすべてのメッセージの割合。 |
クラスタサイズメトリクスは、クラスタ内に存在するノードの数をレポートします。異なる場合、ノードが参加、シャットダウン、または最悪の場合、ネットワークパーティションが発生していることを示している可能性があります。
正常なクラスタは、すべてのノードで同じ値を示します。 |
メトリクス | 説明 |
---|---|
|
クラスタ内のノード数。 |
このセクションのメトリクスは、Infinispan キャッシュのヘルスとクラスタレプリケーションを監視するのに役立ちます。
グローバルタグ
cache=<name>
キャッシュ名。
これらの 2 つのメトリクスを使用して、キャッシュ内のエントリ数を監視します。キャッシュがクラスタ化されている場合、各エントリにはオーナーノードと、異なるノードのゼロ以上のバックアップコピーがあります。
ユニークエントリサイズメトリクスを合計して、クラスタの合計エントリ数を取得します。 |
メトリクス | 説明 |
---|---|
|
ノードによって格納されているエントリの概算数(バックアップコピーを含む)。 |
|
ノードによって格納されているエントリの概算数(バックアップコピーを除く)。 |
以下のメトリクスは、キャッシュアクセス(読み取り、書き込み、およびそれらの期間など)を監視します。
ストア操作は、キャッシュに格納されている値を書き込むまたは更新する書き込み操作です。
メトリクス | 説明 |
---|---|
|
ストアリクエストの合計数。 |
|
すべてのストアリクエストの合計時間。 |
ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットを収集および公開すると、デプロイメントのパフォーマンスに悪影響を与える可能性があります。 |
読み取り操作は、キャッシュから値を読み取ります。値が見つかった場合はヒット、見つからなかった場合はミスという 2 つのグループに分かれます。
メトリクス | 説明 |
---|---|
|
読み取りヒットリクエストの合計数。 |
|
すべての読み取りヒットリクエストの合計時間。 |
|
読み取りミスリクエストの合計数。 |
|
すべての読み取りミスリクエストの合計時間。 |
ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットを収集および公開すると、デプロイメントのパフォーマンスに悪影響を与える可能性があります。 |
削除操作は、キャッシュから値を削除します。値が存在する場合はヒット、値が存在しない場合はミスという 2 つのグループに分かれます。
メトリクス | 説明 |
---|---|
|
削除ヒットリクエストの合計数。 |
|
すべての削除ヒットリクエストの合計時間。 |
|
削除ミスリクエストの合計数。 |
|
すべての削除ミスリクエストの合計時間。 |
ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットを収集および公開すると、デプロイメントのパフォーマンスに悪影響を与える可能性があります。 |
書き込みおよび削除操作は、値がローカルクラスタおよびリモートサイトにレプリケートされるまでロックを保持します。
正常なクラスタでは、保持されているロックの数は一定のままですが、デッドロックにより一時的なスパイクが発生する可能性があります。 |
メトリクス | 説明 |
---|---|
|
このノードによって現在保持されているロックの数。 |
トランザクショナルキャッシュは、トランザクションを完了するために、One-Phase-Commit および Two-Phase-Commit プロトコルの両方を使用します。これらのメトリクスは、操作時間を追跡します。
PESSMISTIC ロックモードは One-Phase-Commit を使用し、コミットリクエストを作成しません。 |
正常なクラスタでは、ロールバックの数はゼロのままにする必要があります。デッドロックはまれであるはずですが、ロールバックの数を増やします。 |
メトリクス | 説明 |
---|---|
|
準備リクエストの合計数。 |
|
すべての準備リクエストの合計時間。 |
|
ロールバックリクエストの合計数。 |
|
すべてのロールバックリクエストの合計時間。 |
|
コミットリクエストの合計数。 |
|
すべてのコミットリクエストの合計時間。 |
ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットを収集および公開すると、デプロイメントのパフォーマンスに悪影響を与える可能性があります。 |
状態転送は、ノードがクラスタに参加または離脱するときに発生します。データの格納のバランスを取り、必要な数のコピーを保証するために必要です。
この操作はリソース使用量を増やし、全体的なパフォーマンスに悪影響を与えます。
メトリクス | 説明 |
---|---|
|
ローカルノードが他のノードからリクエストしたインフライトトランザクションセグメントの数。 |
|
ローカルノードが他のノードからリクエストしたインフライトセグメントの数。 |
クラスタデータレプリケーションは、主な障害の原因となる可能性があります。これらのメトリクスは、応答時間、つまり更新をレプリケートするのにかかる時間だけでなく、障害もレポートします。
正常なクラスタでは、平均レプリケーション時間は安定しているか、わずかな変動があります。障害の数が増加するはずはありません。 |
メトリクス | 説明 |
---|---|
|
成功したレプリケーションの合計数。 |
|
失敗したレプリケーションの合計数。 |
|
クラスタ内のデータのレプリケーションに費やされた平均時間(ミリ秒)。 |
成功率
式を使用して、レプリケーションの成功率を計算できます
(vendor_rpc_manager_replication_count) / (vendor_rpc_manager_replication_count + vendor_rpc_manager_replication_failures)
クラスタデータレプリケーションと同様に、このセクションのメトリクスは、データを他のサイトにレプリケートするのにかかる時間を測定します。
正常なクラスタでは、平均クロスサイトレプリケーション時間は安定しているか、わずかな変動があります。 |
タグ
site=<name>
受信サイトを示します。
メトリクス | 説明 |
---|---|
|
クロスサイトリクエストの合計数。 |
|
すべてのクロスサイトリクエストの合計時間。 |
|
クロスサイトリクエストの合計数。このメトリクスは、サイトごとのカウンターでより詳細です。 |
|
すべてのクロスサイトリクエストの合計時間。このメトリクスは、サイトごとの時間でより詳細です。 |
|
このノードで処理されたクロスサイトリクエストの合計数。このメトリクスは、サイトごとのカウンターでより詳細です。 |
|
サイトステータス。値 1 はオンラインであることを示します。この値は、Infinispan CLI コマンド |
ヒストグラムが有効になっている場合、パーセンタイルバケットが利用可能です。これらはヒートマップを作成するのに役立ちますが、パーセンタイルバケットを収集および公開すると、デプロイメントのパフォーマンスに悪影響を与える可能性があります。 |
メトリクスを使用したトラブルシューティングに戻ります。