MID サーバー最大スレッド数 - ワーカーグループ - 優先度とキューIssue <!-- /*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: ; } } 目次 MID サーバーと ECC キューのサポート 優先度優先度を利用する機能 MID サーバーと ECC キューのサポート 優先度 優先度の高いジョブはキューを飛び越え、より高い優先度のスレッドでより迅速に実行できます。 優先度スレッドグループスレッド数 (デフォルト)パラメーターメモリ内の入力キューJava 優先度work\monitors\ECCSender フォルダー プローブの例2 (デフォルト)Standard 25 threads.max500 (25*スレッド)5output_2 JDBC, LDAP, Discovery...1 Expedited 20threads.expedited.max400 (20*スレッド)8output_1REST, SOAP0 Interactive 10 threads.interactive.max40 (4*スレッド)10output_0HeartbeatProbeSystemCommand: restartService, grabLog など MID Server が ECC Queue から output レコードのバッチを取得するとき、高い優先度のジョブ(priority フィールド値が低いもの)が優先的に処理されます。 MID Server は、ecc_queue に存在する場合、利用可能な空きスレッド数より多くのジョブを取得します。これらはスレッドが利用可能になるまで MID Server メモリ内でキューに保持されます。ECC Queue の output レコードは Processing 状態になりますが、実際にスレッドで処理が開始されるまでには時間がかかる場合があります。 Note: ECC Queue の Processed timestamp フィールドは、この理由により信頼できません。この値が示すのは、MID Server がレコードを取得した時刻であり、ジョブの実行開始時刻ではありません。 より高い優先度のジョブは、実行開始後に MID Server アプリケーション内でより多くの CPU 時間を割り当てられます。スレッドプールは異なる Java スレッド優先度にマッピングされており、Java はそのジョブにより多くのリソースを割り当てます。 Java はマルチスレッドプラットフォームであり、利用可能なすべての CPU およびスレッドを使用します。可能な限り多くの専用 CPU/Core を持つ専用ホストサーバーまたは VM を使用することを推奨します。そうしない場合、MID Server がアイドル状態に近いときと比較して、負荷が高い時間帯にはスレッドの実行速度が大幅に遅くなる可能性があります。 これは、「Interactive」ジョブが、フォーム更新のためにユーザートランザクションが長時間待機することを回避できるほど迅速に完了することを期待している場合に重要です。 例: 単一の LDAPListener スレッドは、他のすべてのスレッドで Discovery が実行中の場合、ユーザー更新を大幅に遅く処理する可能性があります。 優先度は、結果をインスタンスへ返す際の ECCSender スレッドにも適用されます。このスレッドは output_0 フォルダーの一時ファイルを最初に処理し、次に output_1、その後 output_2 を処理します。 例: 大規模な Standard priority の JDBC Import set が処理途中であっても、Expedited の結果はすべてのインポート行がインスタンスへ送信されるまで待機する必要はありません。 複数の連続した input を単一 output から生成する output_s フォルダー(JDBCProbe および LDAPProbe を含む)は、output レコードの優先度で処理されます(TBC)。 Discovery および Orchestration プローブの場合、ecc_queue input の優先度によって、その sensor を処理する sys_trigger scheduled job の優先度も決定されます。 プラットフォーム内のほとんどの scheduled job および async business rule は priority 100 であるため、Interactive input はこれらより優先されます。 Discovery は、sensor 処理に Scheduled jobs の代わりに System Events を使用するよう設定できます。これにより、インスタンス負荷の管理と scheduler worker thread のブロック防止に役立ちます。 ECC キュー優先順位スケジューラーワーカー優先度 (デフォルト)システム プロパティ2110glide.ecc.async.priority.standard1105glide.ecc.async.priority.expedited050glide.ecc.async.priority.interactive 優先度を利用する機能 一般的に、非常に正当な理由がない限り、すべて Standard priority で実行するべきです。 Vancouver 時点では、ごく少数の機能のみが Standard 以外の優先度を意図的に設定しています。その多くは問題チケットの解決策、または問題の原因として設定されたものです。 Discovery/Service Mapping は、すべてのプローブに対して Discovery Status レコードの優先度を使用します。これは Discovery の起動方法によって異なる場合があります。 Interactive: Pattern Designer debug mode、Cancel Discovery、XMLStats (PRB1564921)Expedited: Service Mapping、Discover Now、Quick Discovery (PRB1624010)、Standard priority スケジュールの Shazzam port scan probes (PRB1408213)Standard: Scheduled Horizontal Discoveries(Shazzam を除く) MID Server Interactive: すべての SystemCommands、Test Credentials Orchestration Expedited: Activity Designer の Test Inputs、Workflow Editor からの Start workflow、および現在はすべての通常 workflow 実行 (PRB1301862) IntegrationHub Expedited: すべての IPaasActionProbeInteractive: Refresh OAuth Tokens 用 RESTProbe Cloud Management Standard: APIProxyProbes CAPI orchestrator Event Management Interactive: Pull Connectors(新しいイベントを遅延なくインスタンスへ取り込む必要があるため) Change Management Standard: Affected CI の自動および手動トリガー Discovery LDAP Expedited: Test Connection および Browse (PRB1331240)Standard: Imports、Listener Release<!-- /*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: ; } } Australia までを含むリリースおよびそれ以降 Resolution<!-- /*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: ; } } リアルタイム更新の User Interface 起動ジョブや、ユーザートランザクションの一部として実行される高速な統合処理については、Expedited priority で実行する余地があります。 このようなジョブを高い優先度で実行するとユーザーエクスペリエンスが向上し、応答待機中のインスタンススレッドのブロックを防止できるため、インスタンス全体のパフォーマンス向上につながります。 ただし、そのような統合処理は、低優先度ジョブからの最終応答を Sensor がバックグラウンドで処理する、真の非同期処理として実装した方がよい場合がよくあります。そうすることで、ユーザーのフォームやインスタンススレッドをまったく待機させません。 そのようなジョブ専用の MID Server を用意することが、より良い解決策である場合があります。 ecc_queue テーブルの before insert business rule は、特定の output の優先度を上げる簡単な方法です。 意図したジョブ以外に影響を与えないよう、条件には Queue、State、Topic、Name、Source、および Agent Correlator フィールドを必ず含めることが非常に重要です。 MID Server のスループット向上を目的とする場合は、利用可能な CPU に加えてスレッド数も考慮する必要があります。 多くのプローブは、CPU を使用せずにエンドポイントからの応答待ちで長時間スレッドをブロックしています。 Standard スレッドプール数を増やす場合(Windows の制限に達する前なら最大 200 まで可能)、他のスレッドプールも比例して増やす必要があります。 threads.max だけを増やして、threads.expedited.max および threads.interactive.max を増やさないということはしないでください。 JVM heap memory や PowerShell プロセス用ホストメモリの増加も忘れないでください。 優先度が 3 種類しかなく、実質的には 2 種類しか利用できないため、高優先度ジョブの複数グループが互いに影響し合うことはよくあります。特にバッチ更新によってジョブが大量発生した場合に発生します。 このような状況では、ジョブごとに専用の MID Server を割り当てることを検討してください。 そうすることで、他のジョブの影響から完全に保護できます。 同一ホスト上で複数の MID Server を実行することは許可されています。 Important notes: すべての Interactive スレッドが使用中になると、重要な MID Server システムコマンドがブロックされる可能性があります。 これには HeartbeatProbe が含まれます。HeartbeatProbe はインスタンスが MID Server の稼働状態を確認するために使用されるため、MID Server が Down と判定され、利用不能になる可能性があります。 そのため、Interactive は使用せず、Standard キューを飛び越える必要があるものには Expedited を使用するのが推奨されます。 Expedited キューも飛び越える必要があることがテストによって確認された場合にのみ、Interactive を検討してください。 高優先度 Sensor scheduled job を実行すること(短期間に大量実行する場合や、少数でも長時間実行する場合)は、インスタンスのパフォーマンス問題を引き起こすことがあります。 Interactive priority の Discovery および Orchestration sensor は priority 50 の scheduled job です。これはほとんどのジョブおよびすべての async business rule より高く、テキストインデクサーや event management ジョブのような非常に重要な処理と同等です。 そのため危険であり、Standard priority を超える実装ではこの点を考慮する必要があります。 優先度に関係なく、スレッドはさまざまな Connection Pool からの接続待ちで停止する可能性があります。 すべてのスレッドが同じ種類のプローブを実行している場合、接続数制限に達する可能性があります。 そのような状況を防ぐため、MID Server Parameters および Properties で各種プロトコルの maximum connections および connections per host を確認してください。 Agent Client Collector は一般的に、オンデマンドホストデータ収集またはポリシー設定更新のようなジョブに対してのみ ECC Queue および Worker threads を使用し、その後すぐに Agent 側ジョブへ引き渡すため、優先度や Worker thread 数はほとんど関係ありません。 ACC Websocket Endpoint extension には、ACC 関連処理の大部分を担当する専用 thread pool property が存在し、ユースケースに応じてチューニングおよびスケーリングできます。 これらは次の処理専用の thread pool です。 sn_agent.mid.ws_keepalive_pool_sizeMonitoring.KeepAlive thread pool size. keepalive processing, where it processes keepalive payloads from agents. (resizable without restart). Also carries the inline (non-blocking) outbound send of schedule/config-sync messages.sn_agent.mid.ws.event_pool_sizeMonitoring.CheckResponse thread pool size. Check response processing, where it processes check response payloads from agents (resizable without restart)sn_agent.mid.ws_rhino_pool_sizeMonitoring.ScriptInclude thread pool size. Script include processing, where it processes anything that is sent to a target mid server script (named-script check results) 最後に、When everything is a priority, nothing is a priority「すべてが優先されるとき、何も優先されない」です。したがって、カスタム実装で優先度を乱用しないでください。そうしないと、この仕組みの目的そのものを損なうことになります。 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: ; } } MID サーバーのシステム要件 CPU が 100% のディスカバリー MID サーバー - 良いか悪いか、その理由とその後は何でしょうか?