セクション 9 / 10

パフォーマンス管理

性能問題の切り分け方、主要な分析トランザクション、メモリとバッファの考え方を解説します。

目次を開く

「システムが遅い」という訴えは、Basisに寄せられる相談の中で最も多いものの1つです。しかし「遅い」の中身はさまざまで、まず何が遅いのかを特定することから始まります。

レスポンスタイムの内訳

SAPは、1回のリクエストの処理時間を複数の要素に分解して記録します。どこに時間がかかっているかを見れば、原因の見当がつきます。

レスポンスタイムの構成要素
要素内容長い場合に疑うこと
待機時間(Wait)ワークプロセスの空き待ちプロセス数の不足、長時間処理の占有
ロール時間ユーザーコンテキストの入替メモリ不足
ロード時間プログラムのロードプログラムバッファの不足
処理時間(CPU)ABAPの実行非効率なループ、大量データ処理
DB時間データベースアクセスインデックス不足、非効率なSQL
エンキュー時間ロック取得の待ちロック競合
GUI時間画面転送ネットワーク、GUI設定

分析のトランザクション

性能分析の主要ツール
Tコード用途
ST03 / ST03Nワークロード分析。全体の傾向を把握
ST05SQLトレース。個別のSQLを詳細に分析
ST02バッファの使用状況。ヒット率とスワップ
ST06OSレベルの監視。CPU、メモリ、ディスク
SM50 / SM66ワークプロセスの状態。長時間処理の特定
SATABAPランタイム分析。処理時間の内訳
DB02データベースの領域とオブジェクト
DBACOCKPITデータベース統合管理

ST03によるワークロード分析

ST03は、システム全体の負荷傾向を把握するための出発点です。時間帯別、トランザクション別、ユーザー別の集計が可能です。

見るべきポイントは、「実行回数が多く、かつ1回あたりの時間が長いトランザクション」です。1回10秒かかるが日に3回しか実行されないものより、1回2秒だが日に5,000回実行されるもののほうが、全体への影響は大きくなります。

バッファの監視

ST02では、各種バッファのヒット率とスワップ回数を確認します。バッファが不足すると、本来メモリから読めるはずのデータをディスクから読むことになり、性能が低下します。

主なバッファ
バッファ内容目標ヒット率
プログラムバッファABAPプログラムの実行形式98%以上
汎用領域バッファクライアント別などのテーブルデータ95%以上
単一レコードバッファ個別レコード95%以上
CUA バッファメニューと画面定義98%以上
画面バッファDynpro定義98%以上

メモリの構成

SAPのメモリ管理は独特で、ワークプロセスが使うメモリには段階があります。

メモリ使用の段階
順序領域内容
1ロールエリア最初に使われる。プロセスごと
2拡張メモリ(EM)複数プロセスで共有。主要な作業領域
3ヒープメモリEMを使い切った後。プロセス専有(PRIVモード)

ヒープメモリを使い始めるとワークプロセスがPRIVモードになり、そのプロセスが他のユーザーに使われなくなります。大量データを扱うプログラムがこの状態を引き起こすと、システム全体に影響します。

性能改善の優先順位

性能問題への対処は、効果の大きいものから順に検討します。

  1. SQLの改善:インデックスの追加、ループ内SELECTの排除。最も効果が大きい
  2. プログラムロジックの改善:ネステッドループの解消、不要な処理の削除
  3. アーカイブ:古いデータを削除・退避してテーブルを小さくする
  4. バッファ・メモリの調整:パラメータチューニング
  5. ハードウェアの増強:最後の手段。根本原因の解決にはならない

📖 わからない用語は SAP用語辞典 で調べられます。

理解度チェック

このセクションの内容を確認しましょう。

確認問題 1

SQLトレースの記録・分析に使用するトランザクションコードはどれか。

確認問題 2

SAPバッファの統計情報を確認するトランザクションコードはどれか。

確認問題 3

ST03Nではトランザクションごとの平均応答時間を確認できる。

確認問題 4

データベース監視に使用するトランザクションコードはどれか。

確認問題 5

パフォーマンス問題の原因は常にデータベースにある。

確認問題 6

パフォーマンス問題の一般的な調査手順を並べてください。

クリックして正しい順番に選んでください