この記事を読むメリット
- ST02(調整サマリ)で「バッファとメモリが足りているか」を、どこを見て判断すればよいかがわかる
- バッファ表・SAPメモリ表・履歴・詳細分析まで、実際の画面で一通り追える
- 気になる値を見つけたあと、何を控えて Basis 担当者に相談すればよいかがわかる
「今日は画面の応答が全体的に遅い」「メモリ不足のダンプが出た」。SAPの運用保守でこんな相談を受けたとき、アプリケーションサーバのバッファとメモリがどれだけ使われているかを確認するのがトランザクションコード ST02(調整サマリ/Tune Summary)です。
プログラムバッファやテーブルバッファのヒット率、スワップの回数、拡張メモリ・ヒープメモリの使用率が1画面にまとまっています。本記事では、ST02の基本的な読み方を実際の画面で追いながら解説します。
博士!ユーザーから「今日は全体的に画面が遅い」と言われました。SM50 を見ても止まっているプロセスは無いし、ダンプも出ていなくて…どこを見ればいいんでしょうか?
うむ、そういうときは ST02 でバッファとメモリの状態を見るのじゃ。バッファが足りずにデータベースへ読みに行っておると、特定の処理ではなくシステム全体がじわっと遅くなるぞい!
不具合調査で使うトランザクション全体の流れは、こちらの記事にまとめています。本記事はその中の「ST02」を深掘りする位置づけです。
あわせて読みたい
【SAP運用保守で使える!】システム不具合調査で役立つトランザクションコードまとめ
この記事を読むメリット SAPシステムの不具合調査で使える主要なトランザクションコードを知ることができます。 エラーの種類別に効率的な調査手順を習得できます。 シ…
この記事のポイント
ST02とは ― バッファとメモリの「足りている度合い」を見るトランザクション
SAPのアプリケーションサーバは、データベースから読んだプログラムやテーブル定義、設定値などを自分のメモリ(バッファ)に保持し、2回目以降はデータベースにアクセスせずに済ませています。バッファから取り出せた割合がヒット率、バッファが一杯で古いデータを追い出した回数がスワップです。ST02 は、この「バッファが足りているか」と、ワークプロセスが使う「SAP メモリが足りているか」を確認する画面です。
| できること | 使いどころ |
|---|
| 各バッファのヒット率・空き領域・スワップ回数を一覧で見る | 「バッファ不足のせいで遅いのか」の一次切り分け |
| 拡張メモリ・ヒープメモリの現在使用率と最大使用量を見る | メモリ不足系ダンプ(TSV_TNEW_PAGE_ALLOC_FAILED など)の裏付け |
| バッファサイズを決めているプロファイルパラメータの現在値を見る | Basis 担当者への相談・SAP Note 検索の材料集め |
| 日ごとの推移(履歴)を見る | 「いつから悪化したか」「特定の日だけか」の確認 |
ST02 は基本的に照会用のトランザクションです。ただし画面の中に「プロファイル更新」や「最大使用統計のリセット」といった変更系の機能も含まれているので、本記事で「押さない」と書いた箇所には注意してください。
ST02を開く
SAP Easy Access 画面のコマンドフィールド(①)に ST02 と入力し、Enter キーを押します。
操作手順
- コマンドフィールド。ここにトランザクションコードを入力します。
画面全体の構成を把握する
「調整サマリ」画面が開きます。上から順に、バッファの表、SAP メモリの表、コール統計の表が並んでいます。
画面の見方
- 機能ボタン:左から「選択」「現行パラメータ」「履歴」「詳細分析メニュー」「全バッファのサマリ」。あとの手順で使います。
- システム・スナップショットの日時・起動:表示している値がいつ時点のものか、そしてサーバがいつ起動したかです。
- バッファの表:プログラム、CUA(メニュー)、Screen(画面)、Tables(テーブル)などバッファごとのヒット率・サイズ・スワップ回数です。
- SAP メモリの表:Page area(ページングメモリ)、Extended memory(拡張メモリ)、Heap memory(ヒープメモリ)の使用状況です。
- コール統計:
SELECT SINGLE や SELECT などの要求のうち、テーブルバッファで処理できた割合(ヒット率)とデータベース呼び出し回数です。
画面右下の「リフレッシュ」(Enter)を押すと、最新のスナップショットに更新されます。
「起動」の日時が出ているのは、なにか意味があるんですか?
ST02 のバッファ統計は、アプリケーションサーバの起動後の累積値なんじゃ。一方、SAP メモリの「現使用」は現在値、「Max使用」は起動後の最大値じゃ。
再起動直後はバッファが空でヒット率が低く出るし、逆に何か月も動いておれば昨日の異常が平均に埋もれる。起動日時とセットで読むクセをつけるとよいぞい。
バッファの表を読む
まずバッファの表です。ここで見るのは主に「ヒット率」と「スワップ」の2列です。
画面の見方
- ヒット率 %:バッファへの読み取り要求のうち、バッファから取得できた割合。目安は 95% 以上、プログラムバッファ(program)は 98% 以上が望ましい値です。
- スワップ:バッファから追い出されたオブジェクトの数で、アプリケーションサーバ起動後の累積値です。格納領域やディレクトリエントリの不足で発生するため、値だけで判断せず、増加傾向と空き状況を確認します。
- この例では CUA バッファのスワップが 475,697 回と突出しています。割当が 3,000 KB と小さく空き領域も 12% しかないため、メニュー定義を頻繁に追い出している状態です。こうした行が「サイズ見直しの候補」になります。
- 空き領域 %:バッファの空き容量の割合。数%まで下がっているとスワップが起きやすくなります。
- % Free Dir:ディレクトリ(バッファに入れられるオブジェクト数の上限)の空き割合。容量に余裕があっても、ディレクトリが尽きるとそれ以上入りません。
- 赤い表示:しきい値を割った項目は赤で塗られます。この例では Calendar バッファのディレクトリが 200 件すべて使われ、空きが 0 になっています。
そのほかの列は次の通りです。
| 列 | 意味 |
|---|
| 割当 [KB] | バッファに割り当てたサイズ。プロファイルパラメータで決まります(後述) |
| 空き領域KB | 空き容量 |
| Dir. Size/FreeDirEnt | ディレクトリエントリの総数と空き数 |
| DB Access | バッファに無くてデータベースを読みに行った回数 |
ヒット率は累積値です。サーバを再起動した直後はバッファが空なので、しばらくは低い値が出ます。「起動」の日時を見て、少なくとも数時間〜1日運用した後の値で判断してください。
CUA バッファのスワップが 47 万回…これって、すぐに直さないとまずいんでしょうか?
あわてなくてよいぞい。画面で分かるのは、起動後の累積スワップ数じゃ。増加が続いているか、利用者に影響があるかは、この値だけでは分からん。確認時刻と画面の数値を控え、履歴も確認したうえで Basis 担当者に伝えるとよいぞい。
SAP メモリの表を読む
次に SAP メモリの表です。ダイアログ処理は主に「拡張メモリ」を使い、1 セッションあたりの上限を超えると「ヒープメモリ」に切り替わります。ヒープメモリを使ったワークプロセスはそのセッション専用になり、これを PRIV モードと呼びます。
画面の見方
- 現使用率 %:現在の使用率。Extended memory の行が常時 80% を超えているようなら要注意です。
- Max使用[KB]:起動後の最大使用量。現在は低くても、ここが大きければ「過去にメモリが逼迫した瞬間があった」ことが分かります。
- Page area:ページングメモリ。プログラム間のデータ受け渡し(
EXPORT TO MEMORY / IMPORT FROM MEMORY など)に使う領域です。共有メモリ(Mem内)に収まらない分はディスク(OnDisk)に置かれます。
- Extended memory:拡張メモリ。この例では使用中が約 16 GB、最大で約 24 GB まで使われています。
- Heap memory:ヒープメモリ。現在は 0 ですが、最大で約 11 GB 使われた履歴があります。ヒープメモリが使われたということは、どこかの時点で拡張メモリを使い切ったワークプロセスがあったということです。
一番下のコール統計の表は、テーブルバッファがどれだけ効いているかを操作の種類ごとに示します。Select single のヒット率が高ければ、マスタ参照の多くがデータベースに行かずに済んでいます。Insert/Update/Delete はバッファを無効化する側なので、ヒット率が 0 で正常です。
現行パラメータを確認する
バッファのサイズは、プロファイルパラメータで決まっています。ツールバーの「現行パラメータ」(Shift+F5)を押すと、バッファごとに関係するパラメータと現在値が一覧で表示されます。
画面の見方
- バッファごとに見出し(オレンジの行)があり、その下に関係するパラメータが並びます。
abap/buffersize:プログラムバッファのサイズ。バッファの表の「割当 [KB]」と同じ値です。
rsdb/cua/buffersize:CUA バッファのサイズ。先ほどスワップが多かったバッファは、ここで「どのパラメータを見直せばよいか」が分かります。
- プロファイルパラメータ(変更)ボタン:押すとパラメータ変更の画面(RZ11 相当)に進みます。調査だけが目的なら押す必要はありません。パラメータの変更は Basis 担当者がメンテナンス手順にしたがって行います。
パラメータの変更は Basis 担当者がメンテナンス手順にしたがって行います。運用担当者の調査では「パラメータ名と現在値を控える」までにとどめてください。
「前画面」(F3)で調整サマリに戻ります。
履歴で日ごとの推移を見る
「今日だけ悪いのか、ずっとこうなのか」を知るには、ツールバーの「履歴」(Shift+F6)を押します。バッファごとに、日ごとのヒット率やスワップ回数が一覧になります。
最初に表示されるのは使われていない古い種類のバッファ(TTAB、FTAB など)で、値はすべて 0 です。Page Down キーで下へ送ると、実際に使われているバッファの日別データが出てきます。
画面の見方
- 列見出し:日付、ヒット率、DB 品質(データベースアクセスの少なさ)、空き記憶域、DB アクセス回数、スワップ(Swapped o.)などです。
- 日別の行:1日1行で、その日の終わり(時刻の列)時点の値です。ヒット率がある日を境に下がっていないか、DB アクセスが急増した日がないかを追います。
- Average:表示期間の平均です。
- 最大使用量:バッファサイズと使用量のピークがいつだったかです。
- 次のバッファ(この例では Generic key buffer = テーブルバッファ)が続きます。
- スワップが発生した日は赤く表示されます。この例では 1 回だけなので問題ありませんが、毎日数千回以上出ているならサイズ見直しの候補です。
履歴画面から「前画面」(F3)で戻ろうとすると、次のようなダイアログが出ることがあります。
操作手順
- No を押します。「Yes」を押すと、履歴画面の「最大使用量」(バッファサイズや使用量のピークがいつだったか)の記録がリセットされ、元に戻せません。この記録はサーバ共通なので、ほかの担当者の調査材料も消えてしまいます。調査中はリセットしないでください。
「Yes」を押すとどうなるんですか? 統計が新しくなるなら良さそうに見えますけど…
履歴に残っておる「ピークの記録」が消えてしまうのじゃ。「いつ一番使われたか」という手がかりは、あとから取り戻せん。調査中は必ず No じゃぞい。
詳細分析メニューから掘り下げる
特定のバッファやメモリをさらに詳しく見るときは、ツールバーの「詳細分析メニュー」(F6)を押します。
画面の見方
- テーブルバッファ(ジェネリックキー/シングルレコード):テーブルバッファの詳細です。
- プログラム:プログラムバッファの詳細です(次の画面)。同じ並びに CUA、Screen、カレンダなど、バッファの表の各行に対応するボタンがあります。
- SAP メモリ:拡張メモリ・ヒープメモリの詳細です(その次の画面)。
- 履歴(本サーバ用/全サーバ用):先ほどの履歴と同じものです。複数のアプリケーションサーバがある場合は「全サーバ用」でまとめて見られます。
- パラメータ:現行パラメータと同じものです。
「プログラム」を押すと、プログラムバッファの詳細が表示されます。
画面の見方
- Efficiency:ヒット率(Hitratio)と、その内訳(Hits/Requests)。
DB access saved はバッファのおかげで省略できたデータベースアクセスの回数です。
- Size:割当(Allocated)、使用中(Used)、空き(Free)のサイズ。
Gaps は断片化で使えなくなっている領域です。
- Directory entries:ディレクトリエントリの総数・使用数・空き数。
- Swaps:追い出したオブジェクト数(Objects swapped)。ここが増え続けるならサイズ不足です。
- 次バッファ(F8):この画面のまま CUA、Screen、テーブルバッファ…と順に切り替えられます。
- バッファオブジェクト(F6):バッファに入っているプログラムの一覧です。何がバッファを占めているかを見たいときに使います。
詳細分析メニューに戻って「SAP メモリ」を押すと、メモリの詳細が表示されます。
画面の見方
- Paging memory:ページングメモリの割当と使用量です。
- Extended memory:拡張メモリ。
Dialog session/Nondialog sess. は 1 セッションあたりの上限、Available が全体の量、Maximum used が起動後のピークです。
- Heap memory:ヒープメモリ。
Dialog session / Nondialog sess. は 1 セッションあたりのヒープの上限(abap/heap_area_dia / abap/heap_area_nondia)、Maximum used は起動後のピーク時の使用量です。回数ではなく量なので、「一番多いときにどれだけ使われたか」を示します。
- モード一覧(F6):今メモリを使っているセッション(ユーザ・トランザクション)の一覧です。「誰がメモリを食っているか」を調べるときに使い、SM50/SM04 へつなぎます。
サマリで「あやしいバッファ」を見つけて、詳細分析で「サイズとディレクトリのどちらが足りないか」を確かめる、という流れなんですね!
そのとおりじゃ。ST02 は「答え」を出す画面ではなく、「どのバッファ・どのメモリが、なぜ足りないか」を数字で示す画面なんじゃ。その数字を持って Basis 担当者に相談するのじゃ!
調査の進め方の例
| 症状 | ST02 で見るところ | 次の一手 |
|---|
| 応答が全体的に遅い | バッファの表でヒット率が低い・スワップが多いバッファを探し、詳細分析でサイズとディレクトリのどちらが足りないかを見る | 現行パラメータでパラメータ名と現在値を控え、Basis 担当者に相談する(自分では変更しない) |
| メモリ不足のダンプ(ST22)が出た | SAP メモリの表で Extended memory/Heap memory の「Max使用」を見て、SAP メモリ詳細の「モード一覧」で大量に使っているユーザ・プログラムを特定する | SM50 で PRIV モードのワークプロセスを確認し、ST22 のダンプと突き合わせる |
| いつから悪化したか知りたい | 履歴でヒット率が下がった日・DB アクセスが増えた日を探す | その日の変更(トランスポート、パラメータ変更、再起動)と突き合わせる |
よくあるつまずき
- ヒット率が極端に低い:サーバを再起動した直後ではないか、「起動」の日時を確認してください。累積値なので起動直後は低く出ます。
- 戻るときに「最大使用統計」のダイアログが出る:履歴画面から戻る際に出ます。「No」を選んでください。「Yes」は履歴のピーク記録のリセットで、元に戻せません。
- 数値が変わらない:表示はスナップショットです。「リフレッシュ」(Enter)で再取得します。
- 見ているのがどのサーバか分からない:ST02 はログオン中のアプリケーションサーバの値です。タイトルの括弧内(例:
mmc-s4sap05_FAA_00)がサーバ名です。ほかのサーバを見るには、SM51 でサーバを切り替えてから ST02 を開くか、詳細分析メニューの「全サーバ用」を使います。
- 赤いセルが出ているが影響が分からない:赤は「しきい値を割った」印で、即障害ではありません。Calendar のような小さなバッファの赤より、プログラム、テーブル、CUA、Screen など大きなバッファの赤を優先して見ます。
まとめ
- ST02 はアプリケーションサーバのバッファとメモリの使用状況を確認するトランザクションです。バッファの統計値には起動後の累積値があります。一方、SAP メモリの「現使用」は現在値、「Max使用」は起動後の最大値です。それぞれの値が示す期間を確認して読みます。
- まず見るのはバッファの表の「ヒット率」と「スワップ」、SAP メモリの表の「現使用率」と「Max使用」です。
- 気になるバッファは詳細分析メニューで掘り下げ、現行パラメータでパラメータ名と現在値を控えて Basis 担当者に相談します。変更系のボタン(プロファイルパラメータ変更、統計のリセット)は調査中は押しません。
「遅い」の原因がバッファやメモリにあるかどうか、ST02 を見れば数字で説明できるんですね。次からは SM50 とセットで確認します!
うむ。調査の全体の流れは下の記事にまとめてあるから、あわせて読んでおくとよいぞい!
あわせて読みたい
あわせて読みたい
【SAP運用保守で使える!】システム不具合調査で役立つトランザクションコードまとめ
この記事を読むメリット SAPシステムの不具合調査で使える主要なトランザクションコードを知ることができます。 エラーの種類別に効率的な調査手順を習得できます。 シ…
あわせて読みたい
【SAP不具合調査】ショートダンプの調査方法(ST22)について解説!
この記事を読むメリット SAPにおけるT-CODE:ST22(ABAP実行時エラー)についての基本を理解することができます。 SAPでは、ABAPプログラムが異常終了したときにショー…
あわせて読みたい
【SAP基礎】SM04でユーザセッションを確認する方法
この記事を読むメリット SAPにログオンしているユーザを確認する方法が分かります ユーザセッションを終了する際の注意点が理解できます SAPを運用していると、現在どの…