サービスポータルのパフォーマンス問題の分析Summary多くの場合、サービスポータルの特定のページに移動するか、URL を直接アクセスすると、ロードが非常に遅くなるという問題が観察されます。これには複数の理由が考えられますが、最も一般的な理由は、ロード中に 1 つまたは少数のウィジェットにほとんどの時間がかかっている可能性があることです。この記事では、このようなシナリオを決定する方法とそれらを見つける方法について説明します。Releaseすべてのリリースに適用Instructions1.まず、どのページの読み込みが遅いかを知る必要があります。問題の再現手順に従って既にわかっているかもしれませんが、そうでない場合は、ページをロードし、ID パラメーターの URL に存在する値を探します。 (例:/sp?id=list) 2.ページが判明したら、ページの読み込みにどれくらいの時間がかかっているかを確認します。これは、ブラウザ開発ツールの [ネットワーク] タブで確認できます。これにより、どの側面にどれだけの時間がかかっているかがわかります。 次のスクリーンショットフォームのユースケースでは、所要時間の合計が 5.43 秒であることに注意してください。これは主に「待機」時間~4秒で取られます。 「待機時間」が最も長い場合は、サーバーからの応答がそれより長いことを意味します。 3。サーバー時間の方が長くかかっていると判断されたら、どのサーバー機能に最も時間がかかっているかを確認します。3つのシナリオがあり得ます。実行速度の遅い ACL、b. 実行速度が遅いビジネスルール または c.実行速度の遅い SQL クエリー。 4.次に、 System Diagnostics > Session Debug > Debug Log first を有効にして、これらのうちどれに最も時間がかかっているかを把握します。それに基づいて、より多くのセッションデバッグを有効にすることができます。 5.デバッグログが有効になっている場合は、問題を再現し、jsdebugger ウィンドウまたは ui_page.do でログを取得してみてください。このトランザクションにさらに時間がかかる場合は、次のようなログが表示されます。キーワードが「EXCESSIVE」なので、command+F で検索できます log05:15:20 AM.771 EXCESSIVE *** 終了 #2298398 /api/now/sp/page、ユーザー:admin、合計時間:0:00:06.484、処理時間:0:00:06.484、SQL 時間:0:00:05.209 (カウント:887)、ビジネスルール:0:00:00.001 (カウント:6)、ACL 時間:0:00:00.001、キャッシュビルド時間:0:00:00.007、ソース:103.23.66.61、type:rest、method:GET、api_name:now/sp、resource:now/sp/page、version:Default、user_id:admin、response_status:200 6.このログでは、どのコンポーネントが最も時間がかかったかを確認できます。このユースケースでは、合計時間は~6秒でした。これは、SQL 時間 = 5 秒、ビジネス ルール = 1 ミリ秒、ACL = 1 ミリ秒として配布されました。したがって、ここでの原因はSQLクエリであり、最も時間がかかっていることは明らかです。 7.コンポーネントが判明したら、特定のトランザクションの特定の機能を探します。このトランザクションを開始した要求 URL を忘れずにメモしてください。このユースケースは API 呼び出し ( /api/now/sp/page) であり、ネットワークログでも同じことが確認できます。 8.そのコンポーネントのセッションデバッグを有効にします。この場合は、 SQL のデバッグ (詳細) を有効にします。詳細ログを有効にする理由の 1 つは、クエリのトレースが表示されることです。基本的には、この速度低下の原因であるウィジェットのsys_idを提供します。 9.SQL デバッグが有効になったら、問題を再現し、ui_page.do を再ロードして新しいログを取得します。 10.この後、次のスクリーンショットに示すように、API 名で検索し、[クエリ] でトランザクション名を探します。これにより、トランザクションごとにすべてのクエリにどれくらいの時間がかかったか、どのクエリが何パーセントの時間を費やしたかが説明されます。そうすることで、時間のかかるクエリをより明確に知ることができます。 11.時間のかかるクエリが検出されたら (OOB では実行時間の長いクエリが上部に表示されます)、以下のログでクエリを検索します。通常、選択フィールドは SQL ステートメントで非表示になっているため、クエリの末尾部分をコピーして検索します。検索すると、正確なSQLエントリログが表示され、SQLログを展開して、これを引き起こしているウィジェットを確認できます。 12.次に、ウィジェットを分析し、それに基づいてクエリーを変更します。 これは、クエリの速度低下が原因の状況です。ビジネスルールまたは ACL が原因であることが判明した場合は、それぞれのセッションデバッグを有効にします。これらは、それぞれのトランザクションが最も多くの時間を費やしていることを示します。その後、それらを調査して、それに応じて解決策を与えることができます。 Related Linksスクリプトデバッガとセッションログセッションのデバッグ