Automation for Jira における低速なルール実行のトラブルシューティング
プラットフォームについて: Cloud、Server、および Data Center - この記事はすべてのプラットフォームに等しく適用されます。
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Fisheye および Crucible は除く
要約
監査ログによって、一部のルールが予想よりも実行に時間がかかっていることが後々わかる場合があります。
最初のステップは、[ルールを最適化する] ページをチェックして一般的なルールのベストプラクティスを確認することです。
Automation for Jira 7.4.0 からログを JSON にエクスポートして、ルール実行の詳細を確認できるようになりました。
診断
ログのエクスポート後、JSON データをフォーマットして読みやすくします。Sublime や VS Code などのエディターにはそのためのツールがありますが、そのジョブを実行できるオンライン ページもいくつかあります。
分析を始めるために一例を挙げましょう。
{
"items": [
{
"id": 741068,
"summary": "Create issue on transition",
"authorKey": "jiraadmin",
"created": 1643673518072,
"startExecution": 1643673518072,
"endExecution": 1643673595145,
"category": "SUCCESS",
"eventSource": "jira.issue.event.trigger:transitioned",
"objectItem": {
"id": 1229,
"name": "Create issue on transition",
"typeName": "jira.issue.event.trigger:transitioned"
},
"globalAssociatedItems": [],
"globalMessages": [],
"componentChanges": [
{
"id": 1706137,
"componentId": 60056,
"component": "ACTION",
"componentNameKey": "Create issue",
"startTime": 1643673589202,
"duration": 11882,
"associatedItems": {
"limit": 9223372036854775807,
"offset": 0,
"total": 0,
"results": []
},
"changeItems": {
"limit": 9223372036854775807,
"offset": 0,
"total": 1,
"results": [
{
"fieldName": "Issues created successfully",
"changeTo": "SD-123"
}
]
}
},
{
"id": 1706136,
"componentId": 60054,
"component": "CONDITION_BLOCK",
"componentNameKey": "If block",
"startTime": 1643673539852,
"duration": 98700,
"associatedItems": {
"limit": 9223372036854775807,
"offset": 0,
"total": 0,
"results": []
},
"changeItems": {
"limit": 9223372036854775807,
"offset": 0,
"total": 1,
"results": [
{
"fieldName": "The following issues passed:",
"changeTo": "SD-122"
}
]
}
},
{
"id": 1706135,
"componentId": 60052,
"component": "TRIGGER",
"componentNameKey": "Issue event",
"startTime": 1643673518085,
"duration": 43534,
"associatedItems": {
"limit": 9223372036854775807,
"offset": 0,
"total": 1,
"results": [
{
"id": "154644",
"name": "SD-122",
"typeName": "ISSUE",
"parentId": "10001",
"parentName": "SD"
}
]
},
"changeItems": {
"limit": 9223372036854775807,
"offset": 0,
"total": 0,
"results": []
}
}
],
"projectIds": [
"10001"
],
"duration": 77071
},
{
"id":...
それぞれのアイテムが 1 つのルール実行です。
データの先頭には、概要というよりは一般に UI で使用できるデータがあります。トラブルシューティングで最も重要なフィールドは次のとおりです。
- summary - ルール名
- created - ルールのトリガー時間
- startExecution - 実行開始日
- endExecution - 実行終了日
- category - アイテムのステータス
To find the rule execution duration, just subtract the startExecution from the endExecution times.
ログをエクスポートする最も興味深い理由は、componentChanges の下にある各コンポーネントの詳細を調べることです。
- コンポーネントは下から上に並んでいるので、下部にトリガーが表示されます。
- 各コンポーネントにはミリ秒単位の期間とその startTime があります。主にどのコンポーネントで問題が発生しているのか、または全体的な速度低下があるのかを理解するのに役立ちます。
- 結果の下に、そのコンポーネントの結果が表示されます。これによって各コンポーネントが効果的に実行したアクションを把握できるうえに、何により長い実行時間がかかっているかを理解するために役立つ場合もあります。
ソリューション
すべての状況に対応できる標準ソリューションはないため、最も一般的なソリューションのいくつかを次に示します。
- ルールのベスト プラクティスは [ルールを最適化する] ページをご確認ください。
- If using JQL in a component, try to use smart values. If not possible, check Factors contributing to JQL performance in Jira Server and Data Center.
- created と StartExecution の各日付に大きな違いがある場合は、ルールがキューに入れられている、つまりルール作成率がサーバーの処理能力を超えていたことを意味している可能性があります。
- 他のルールを最適化してみてください。
- データベースのパフォーマンスを検証します。
- If the server CPU is not high, consider increasing the number of threads for Automation for Jira in its configured Service Limits (
automation.processing.thread.pool.size.per.node
property)
To avoid general performance issues, perform this increase in small steps.
- 明確な理由もなく、すべてのアイテムに長時間かかっている場合
- 監査ログの有効期限が大きくなりすぎた可能性があるため、有効期限を設定します: [監査ログ項目を期限切れにする]
- データベースのパフォーマンスを確認します。