「SAP Basis概要の教科書」No.20 SAP 性能分析について
INDEX LINK
はじめに
今回は、SAPシステムのBasis運用で障害分析と並び、重要な作業となる性能分析のアプローチ方法についてご説明いたします。
性能分析用のトランザクションは複数用意されていますが、アプローチ方法を誤ると、根本原因にたどり着かず誤った対策を打ってしまうことも少なくありません。
ここではトランザクションの使い方ではなく、性能問題が発生した際にどこからアプローチすべきかという点についてお話します。
1.まずはじめに取り掛かること(システム全体の問題か個別の処理の問題かの選別)
最初に、事象を正確に捉える必要があります。「XXXという処理がいつもより遅い」と利用者から問い合わせを受けた際、どこからアプローチするべきでしょうか。
まずは、システム全体で性能が低下しているのか、その処理単体の性能の問題なのか確認します。
アプローチの方法としては、該当の処理が遅かった「時間帯」を確認します。その時間帯の他の処理も同様に遅くなっているか否かを確認します。
その際に有効なトランザクションとして、「ST03N」があります。こちらで時間別のプログラム実行時間が確認できます。著しく処理時間が延びているのが、その処理だけなのか他の処理も全体的に延びているのかを確認します。システム全体に関わる問題だった場合の対応については、次回お話いたします。
今回は、その処理のみ遅かったケースについて続けて説明いたします。
2.個別の問題(該当の処理だけの問題)へのアプローチ
個別の問題の場合、「いつから性能が低下したか」をさらに遡って調査します。たまたま利用者から報告を受けて気付けたが、実際にはその前から問題が発生した可能性あり、その日時へ遡って根本原因を究明する必要があります。調査には上と同様、トランザクション「ST03N」が良いでしょう。頻繁に実行される処理であれば他の時間帯と、日次で実行される処理であれば他の日と比較します。そこで「ある時点から継続的に遅くなっている」のか「一時点でのみ急に遅くなっていた」のかを突き止めます。
3.ある時点から継続的に遅くなっている場合
これはシステムリソースの問題ではなく、プログラムの内容がある時点から書き換わったしまった。つまりプログラムの改修の影響が性能低下招いている可能性が高いです。トランザクション「STMS」の移送履歴より、性能低下が発生し始めた近辺に該当プログラムの移送が行われていなかったか確認して下さい。プログラム内のクエリー変更によりDBレスポンスが低下している恐れがありますので、プログラム改修者(移送依頼元)に状況を説明し、プログラムの再改修(場合によっては切り戻し)を依頼します。
4.一時点でのみ急に遅くなっていた場合
この場合は、もう少し深堀する必要があります。前述のトランザクション「ST03N」にて「その処理のどの部分に時間を要しているか」確認します。CPU時間の場合、潜在的なプログラムバグが存在し、それが顕在化した可能性があります。事象をプログラム開発担当者に共有し、開発環境などで再現テストを行い、原因調査を行います。DB時間の場合、その処理の読み込み対象テーブルとの間で何か問題が起きています。例えば、同時間帯にその処理で参照しているテーブルを別の処理が更新(ロック)していた、あるいは該当テーブルに大量のデータが投入されて適切な索引が追加になった、統計情報が古くなって更新が必要になったなどが考えられます。
5.テーブルアクセス時間長時間化へのアプローチ
厳密にはSQLトレース(トランザクション「ST05」)を使って分析しないと調査は難しいのですが、本番環境でトレースを取るのはシステム負荷を考慮してNGとなっている環境も多いと思います。その場合、トランザクション「DB02」の「パフォーマンス」-「SQL文」から応答時間が遅いクエリーを見つけることができます。この一覧にはプログラム名も表示されていますので、該当の処理名と合致するものがないか確認します。もしある場合は、そのクエリーのどこでボトルネックになっているかクエリーコストが表示されますので、そこから改善策を見出します。どのテーブルへのアプローチで遅くなっているかもわかりますので、同じくトランザクション「DB02」の「領域」-「単一テーブル分析」にて、適切な索引が設定されているか、統計情報の更新日が古くなっていないかなどテーブル分析を行います。
まとめ
いかがでしたでしょうか。今回は性能問題の最初の切り分けから入り、遅い処理単体の性能分析方法についてご説明しました。アプローチの方針を誤ると、出戻り調査が必要になり結果的に原因究明に時間を要することになることもあります。まずは事象を正確に捉える癖を付けるようにすると良いと思います。次回は、今回ご説明できなかったシステム全体が遅くなっている場合の性能分析についてお話いたします。