イベント処理ジョブの遅延を識別して解決する方法Summary<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } イベント処理ジョブの遅延を識別して解決します。イベントが長時間 Ready または Queued ステータスのままになっている場合に対応します。この記事では、イベントがイベント処理スケジュール済みジョブに割り当てられる仕組みと、ジョブがスタックまたは欠落している場合のトラブルシューティング方法について説明します。 イベントが処理ジョブに割り当てられる仕組み バケットの割り当て イベントを受信すると、各イベントにバケット番号が割り当てられます。この値は、イベントレコードの [Bucket] フィールドに格納されます。 ジョブの分配 バケットは、利用可能なイベント処理スケジュール済みジョブに分配されます。各ジョブに割り当てられたバケット範囲は、Schedule Item [sys_trigger] テーブルのスケジュール済みジョブレコードで確認できます。ジョブ名は "Event Management - Process events #n" です。 バケット範囲は特定のジョブ名に割り当てられます。たとえば、"Event Management - Process events #1" には 0〜25 の範囲が割り当てられる場合があります。クラスター内の各ノードには同じジョブ名が割り当てられます。 [Event Management] > [Properties] > [Enable multi node event processing] が [Yes] に設定されている場合、各ジョブはアクティブノード数に基づいて (NodeloadInfo で) Match.ceil(range_size/#of nodes) によりサブ範囲を計算します。4 ノードクラスターの場合、各 "Event Management - Process events #1" ジョブは 7 つのバケットの専用サブ範囲を処理します (例: ノード 1: 0〜6、ノード 2: 7〜13、ノード 3: 14〜20、ノード 4: 21〜24)。クラスターに変更がない場合、特定のバケットを処理できるノードは 1 つだけです。 注: この設計では、何らかの理由でノードで子ジョブが再作成されない場合、特定のバケット範囲が処理されないことがあります。これは、ノードが停止、再起動、またはクラスターに追加された場合に発生する可能性があります。 ジョブ数の設定 イベント処理スケジュール済みジョブの数は、システムプロパティ evt_mgmt.event_processor_job_count を使用して設定します。また、[Event Management] > [Properties] > [Number of scheduled jobs processing events] からも確認できます。 マルチノードイベント処理が有効な場合、"Event Management - Process events" ジョブの合計数は次の式で求められます: (スケジュール済みジョブ数 × アクティブノード数) + System ID が "ACTIVE NODES" のジョブ数。アクティブノードとは、Node State [sys_cluster_state] テーブルでステータスが Online、スケジューラーが Any に設定されているノードです。 イベントのクレーム イベントは、割り当てられたバケットに従ってスケジュール済みジョブによって要求されます。 New York リリース以前: ジョブがイベントを処理する際、現在の実行で処理されるすべてのイベントに最初に queued.<sys_id_of_scheduled_job> というステータスが付与されていました。これにより、特定のノードで実行されなくなったスケジュール済みジョブによって要求されたイベントがスタックする可能性がありました。New York リリース以降: queued ステータスは使用されなくなりました。"Event Management - Coordinator Job" が 30 秒ごとに実行され、設定に従ってすべてのイベント処理ジョブが実行されていることを確認します。問題が検出された場合はジョブ数が修正され、修正後はコーディネータージョブを待機していたすべてのジョブが実行できるようになります。 テーブルのローテーション Event [em_event] テーブルは 7 日間設定のローリングテーブルで、24 時間ごとにテーブルが切り替わります。イベント処理ジョブは、現在または直前のテーブル (2 日分) にのみ存在するイベントを処理します。イベントはこれらのテーブルに約 5.5 日間保持されます。 イベント処理ジョブの問題を識別する方法 イベントが長時間 Ready または Queued ステータスのままになっている場合は、次の手順で問題を識別します。 Event [em_event] テーブルで影響を受けるイベントのレコードを開き、[Bucket] フィールドの値をメモします。[System Scheduler] > [Scheduled Jobs] > [Today Scheduled Jobs] に移動し、"Event Management - Process events" で始まるジョブをフィルタリングします。各ジョブについて、以下を確認します。 ジョブ数: スケジュール済みジョブの数が、前のセクションで説明した設定に基づく想定数と一致していることを確認します。ジョブが欠落している場合は、[Claimed by] 列でグループ化し、想定より少ないジョブのノードを特定します。次のアクション: [Next action] 列を確認します。ジョブは 5 秒ごとに実行される必要があります。次のアクションが 5 秒以内でない場合、ジョブはスタックしている可能性があります。要求元: ジョブがパッシブノードによって要求されている場合、ジョブはスタックしています。状態: ジョブの状態が Error または Queued に設定されていないことを確認します。 ワークアラウンド 実行中のイベント処理ジョブの数が正しくない場合: [Event Management] > [Properties] > [Number of scheduled jobs processing events] に移動します。値を変更し (例: 2 を 3 に変更)、元の値に戻します。これにより、現在の設定に従ってすべての実行中のジョブが再作成されます。cache.do を実行します。影響を受けるイベントのステータスが「Processed」に変わり始めることを確認します。イベントが Queued ステータスのままで処理されない場合は、スクリプトを使用してイベントを再作成し、イベント処理ジョブが処理できるようにします。 作成時刻が 2 日以上前の Ready ステータスのイベントが表示される場合 (ジョブが処理しないことを意味します)、プロパティ evt_mgmt.events_processing_all_shards を true に設定します。これにより、イベント処理ジョブはすべてのテーブルのイベントを処理するようになります。すべてのイベントが処理されたら false に戻します。 イベント管理セルフヘルスモニタリング デフォルトで、Event Management には潜在的な問題が検出されたときにアラートを作成するセルフヘルスモニタリング機能が含まれています。イベント処理の遅延に関連する 2 つのアラートは次のとおりです。 Event Processing JobDelay in event processing これらのアラートを確認するには、Alert [em_alert] テーブルで次の値を持つレコードを検索します。 ソース: EMSelfMonitoring説明に「Delay in event processing:」または「Wrong Event Processing jobs count」が含まれている インスタンスでセルフヘルスモニタリングが有効になっているかどうかを確認するには、[Event Management] > [Settings] > [Properties] > [Enable Event Management self-health monitoring] に移動します。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } }