Technical Articles
SAP Analytics Cloudストーリー SAP HANA・SAP BWライブデータ接続時のパフォーマンス分析について
はじめに
パフォーマンスを改善したいときには、実行時間を長くしている原因を特定することが大切です。前回のブログポストでは、SAP Analytics Cloud ストーリーのロード時間のパフォーマンスを分析するときに、1.クライアント環境、2.ネットワーク環境、3.SAP Analytics Cloud側の実装内容、4.データソース(SAP HANAビュー・SAP BWクエリ)の実行時間、の4つの構成要素から問題を切り分けることについてご紹介しました。3や4は、ウィジェットのロード時間やクエリの実行時間をそれぞれ計測して、ページロード時間に大きく影響するウィジェットやクエリを特定する、個から全体へのアプローチです。反対に、ページロード時に実行されるリクエスト全体の実行ログから、実行時間を長くしている特定のリクエストを見つける、全体から個へのアプローチもあります。分析対象のページに複数の種類のウィジェットやクエリが使用されているときには、全体から詳細へと分析をすすめるアプローチのほうが計測対象のオブジェクト数を減らすことができるので効率的です。
このブログでは、SAP HANAライブデータ接続やSAP BWライブデータ接続を使用したSAP Analytics Cloudストーリーの「ページロード時のリクエスト全体を俯瞰」、「個別リクエストの詳細ログを確認」、「サーバー側でログを確認するための技術情報を取得」、「サーバー側での実行時間分析」、という順番で、全体から詳細へと分析をすすめるアプローチをご紹介します。
ログの取得手順は、SAP Analytics Cloud ストーリーを最適なパフォーマンスでご利用いただくために をご覧ください。
ページロード時のリクエスト全体を俯瞰
ページがロードされるときに実行されるリクエスト処理の全体を俯瞰します。どのようなリクエストがどの程度の数、どの程度の時間、処理されたあとにページが表示されているのか、実行時間短縮のための改善対象とするのはどのリクエストになるのか、探します。
ネットワークログを開きます。
上部のパネルに表示されているグラフでは、全体の実行時間やブラウザとサーバーの通信を俯瞰することができます。この例の場合、60秒を超える複数のリクエストが並列処理されていることがわかります。
下部のパネルのwaterfall欄でも全体のリクエストの処理状況をざっと確認することができます。また、実行時間が長いリクエストを見つけることもできます。この例の場合、長いリクエスト処理が続いた後、ページが表示されたことが分かります。
個別リクエストの詳細ログを確認
ページロード処理の全体実行時間に大きく影響している特定のリクエストを見つけたら詳細ログを確認します。waterfall欄のグラフの上にマウスのカーソルをあわせると、リクエストの処理にかかった時間の詳細が表示されます。この例では、リクエスト送信までの待機時間が45秒、ブラウザが最初のデータを受け取るまでに19秒が記録されています。リクエスト処理時間の内訳から、改善対象とするべき時間は、どの処理のための時間で、どのくらいの時間なのかが分かります。
サーバー側でログを確認するための技術情報を取得
ネットワークログで長時間処理されるリクエストの詳細情報を確認すると、サーバーの処理時間の占める割合が大きいことがあります。そのようなときは、サーバー側で実行されているSAP HANAビューやSAP BWクエリに実行時間改善の余地があるかどうか確認することになります。調査対象のSAP HANAビューやSAP BWクエリの技術名称は、ネットワークログから取得することができます。
SAP HANAライブデータ接続時のログからは、SAP HANAビューの情報や実行ユーザIDがわかります。SAP BWライブデータ接続時のログからは、クエリの情報や、サーバー側で記録されたBW統計のSessionIDとStepIDがわかります。これらの情報があれば、サーバー側でのパフォーマンス分析を始めるときに対象のオブジェクトを絞り込んだり、ブラウザでログを取得した時と同じタイミングで取得した統計情報と紐づけて分析したりすることができます。
SAP HANA ライブデータ接続時のログ例
SAP BW ライブデータ接続時のログ例
サーバー側での実行時間分析
ライブデータ接続時にアクセスされるサービス略図
サーバー側での実行時間分析を実施するにあたって、SAP Analytics Cloudからライブデータ接続でブラウザにデータを表示するときにパフォーマンスに影響する領域はどこにあるのか確認しておきます。SAP HANAライブデータ接続時は、InA(Information Access)サービスとMDSサービスを介してSAP HANAビューを実行しています。SAP BWライブデータ接続時は、InAサービスを介してSAP BWクエリを実行しています。それぞれのサービスの処理時間がサーバー側で表示データを生成するために必要な時間ということです。
InAサービスを介してSAP HANAビューやSAP BWクエリが実行されていますが、SAP HANAビューやSAP BWクエリをサーバーで直接実行したときの実行時間を短縮することは必要です。SAP HANAのパフォーマンスチューニングやSAP BWの統計情報分析などを利用して、SAP HANAビューやSAP BWクエリ単体での実行時間改善を実施します。
SAP HANA Performance Guide for Developers
InAサービスについては、継続的に製品の改善が提供されています。SAP HANAライブデータ接続時には下記の情報を参考にさらに分析を進めることができます。
Troubleshooting Multi-Dimensional Services Queries
2670064 – FAQ: SAP HANA Multi-Dimensional Services (MDS)
SAP BWライブデータ接続時には、BW-BEX-OT-BICS-INAにて提供されているSAP BWサーバー側へのプログラム修正がある場合には適用します。
まとめ
ブラウザで取得した実行ログを利用して、全体実行時間に大きく影響しているリクエストの詳細ログを確認し、サーバー側でのオブジェクト名称を特定する手順をご紹介しました。実行ログの情報を利用することで、ビューやクエリの実行時間をひとつずつ確認するよりも早く、ボトルネックとなるリクエストを特定し、データソース側の分析のための正確な技術情報を取得することができます。実行しているストーリーの定義内容をすべて把握していない場合には、とても有用な分析の手がかりとなります。ウィジェット、ビュー、クエリが複数利用されている比較的複雑な定義のストーリーを分析するときに、実行ログを取得して効率的な分析をしていただけると幸いです。