遅いパターンの原因を特定し、潜在的なパフォーマンスの改善内容に優先順位を付けます。
始める前に
必要なロール:sn_app_insights.admin または admin
手順
-
移動先 .
-
[遅いイベント]、[遅いトランザクション]、[遅いクエリ]、および [遅いスクリプト] のテーブルを表示して、潜在的なパフォーマンスの問題を探します。
- 日の範囲を選択して、1 日、7 日、または 30 日の期間にフォーカスします。
- [範囲内の平均実行時間 (Average Execution Time In Range)] 列でソートして、一貫して実行時間が長いパターンを特定します。
- [範囲内の実行回数 (Execution Count In Range)] 列でソートして、どのパターンが最も頻繁に実行されているかを確認します。
-
実行時間が長く、実行回数が多い遅いパターンを選択します。
[平均実行時間] の詳細グラフには、遅いパターンの実行時間とその 1 日の移動平均が表示されます。
-
[平均実行時間] の詳細グラフを分析して、遅いパターンのパフォーマンスを経時的に表示します。
- 選択した時間範囲内で問題が急増しているところを探します。診断イベントを重ねることで、誤ったアラームを示す可能性がある影響の大きいシステムイベントとの相関を探します。
- 選択した時間範囲でパターンが実行された回数を表示します。
- 1 日の移動平均の傾向ラインを確認して、パフォーマンスが経時的に悪化しているかどうかを判断します。
-
[レコードの表示]を選択して、遅いパターンのトリガーになっているものを特定します。
遅いパターンのレコードが表示され、クエリまたはスクリプトの内容、最初に実行された時刻、最後に実行された時刻などの詳細が示されます。
-
トラブルシューティングに役立つ追加情報にアクセスするには、[参照スクリプト (Referenced Scripts)] および [関連する遅いパターン (Related Slow Patterns)] 関連リストを追加します。
| オプション | 説明 |
|---|
| 遅いスクリプト |
- コンテキストメニュー (
) からフォームを選択します。
- [ビュー] > [遅いスクリプトのインサイト (Slow Script Insights)] を選択して、フォームビューを変更します。
|
| 遅いクエリ |
- コンテキストメニュー (
) からフォームを選択します。
- [ビュー] > [遅いクエリーのインサイト (Slow Query Insights)] を選択して、フォームビューを変更します。
|
-
速度低下の原因を判断します。
- 遅いクエリーを調査するときは、[参照スクリプト (Referenced Scripts)] 関連リストで呼び出し順序が最も高いエントリを見つけることで、どのスクリプトまたはビジネスルールが遅くなる原因かを判断します。たとえば、呼び出し順序が 1 のビジネスルールで呼び出された呼び出し順序が 2 のスクリプトによって遅いクエリがトリガーされたとします。このスクリプトの呼び出し順序が最も高いため、このスクリプトによって遅いクエリが直接トリガーされています。
- 遅いスクリプトを調査するときは、 [関連する遅いパターン (Related Slow Patterns)] 関連リスト内のパターンを表示することで、スクリプトによってトリガーされた遅いパターンを特定します。[範囲内の平均実行時間 (Average Execution Time In Range)] 列と [範囲内の平均実行回数 (Average Execution Count in Range)] 列でソートして、最初に調査する遅いパターンを決定します。最初に、各列の値が最も大きい遅いパターンを調べます。
- [関連する遅いパターン (Related Slow Patterns)] リストを表示して潜在的な問題を確認します。このリストには、参照スクリプトが共通する他の遅いパターンのリストが表示されます。複数の遅いパターンが同じスクリプトインクルードまたはビジネスルールを参照していれば、そこに問題があることがはっきりします。
- オプション:
複数の遅いパターンのトラブルシューティングを行うには、各レコードを開き、 [関連する遅いパターン (Related Slow Patterns)] 関連リストのエントリ数を確認して、エントリ数が大きい遅いパターンのデバッグまたは解決を優先的に行います。
エントリ数が大きい遅いパターンをデバッグすると、パフォーマンスが大幅に向上する可能性が高くなります。
-
パフォーマンスの問題を解決するためのアクションを実行します。
- 問題を起こしているスクリプトインクルードまたはビジネスルールを最適化または削除します。
- 遅いクエリの使用を回避できるかどうかを判断します。そのクエリが必要な場合は、追加のクエリ条件または sys_id クエリを使用して最適化することで、必要な情報のみを返すようにします。
- 遅いクエリのパフォーマンスをインデックスで最適化できるかどうかを判断します。
遅いクエリのトラブルシューティング
[範囲内の実行回数 (Execution Count In Range)] フィールドで [遅いクエリ] テーブルをソートすると、過去 7 日間の実行回数が多い SELECT ステートメントが表示されます。
この遅いクエリの原因を知るには、クエリ名を選択して詳細グラフを開き、[レコードを表示]を選択します。
[参照スクリプト (Referenced Scripts)] 関連リストに 3 つのスクリプトが表示されます。DeprecationCalculations スクリプトがすべての参照スクリプトの中で最も高い順序で呼び出されていることから、このスクリプトが遅いパターンを直接トリガーしたことが分かります。
問題を解決するには、次の作業を行います。
- DeprecationCalculations スクリプトインクルードを調べて、このクエリの使用を回避できるかどうかを判断します。この例では、クエリは fx_currency テーブルに対して行われています。このことは、そこで通貨計算が行われていることを暗示しています。この計算を回避するか、不要な場合は削除してください。
- DeprecationCalculations でクエリーを回避できない場合は、呼び出し順序の低い他のスクリプトの呼び出しを回避できるか、実行回数を減らすことができるかどうかを判断します。この例では、DepreciationUtils は DeprecationCalculations を呼び出す必要がありますが、スケジュール設定済みジョブ「減価償却を計算」の実行頻度を低く設定できると考えられます。
- 呼び出し順序の低いスクリプトを調整できない場合は、インデックスを追加してパフォーマンスを向上させることを検討してください。