この記事を読むメリット
- T-CODE:SM50 でワークプロセスの種類・状態・実行中のプログラムを確かめる方法が分かる
- 情報領域の空きの数と平均負荷の読み方が分かる
- T-CODE:SM66 でシステム全体のワークプロセスを確かめる方法が分かる
「画面が固まった」「ジョブが終わらない」といった問い合わせを受けたときは、まずワークプロセスが空いているかを確かめます。
T-CODE:SM50 では、いまログオンしているアプリケーションサーバ(AS インスタンス)のワークプロセスの種類・状態・実行中のプログラムを一覧で確認できます。T-CODE:SM66 では、システム全体のワークプロセスをまとめて確認できます。
この記事では、次の操作を画面を 1 つずつ追って解説します。
- T-CODE:SM50 で インスタンスのワークプロセスの状態を確かめる手順
- T-CODE:SM66 で システム全体のワークプロセスを確かめる手順
博士!「画面が固まった」って問い合わせが来たんですけど、サーバの中で何が動いているか見る方法はありますか?
うむ、T-CODE:SM50 でワークプロセスの状態を見れば、空きがあるか、何が動き続けているかが分かるのじゃ。画面を追って説明していくぞい!
この記事のポイント
前提
- 使うトランザクション: SM50・SM66
- 必要な権限: T-CODE:SM50・SM66 を実行できる権限
ワークプロセスの仕組み
実務での要件の例
業務の担当者から「画面が固まったまま進まない」と問い合わせを受けた場面を考えます。この要件は、次のように分けて進めます。
| 要件の部分 | どうするか |
|---|
| ワークプロセスに空きがあるかを確かめる | T-CODE:SM50 の情報領域で、ダイアログの「合計/空き」と平均負荷を確かめます |
| 長く動き続けている処理を探す | 一覧でステータスが「実行中」の行の、処理時間と実行中のプログラムの名称を確かめます |
| ほかの AS インスタンスも含めて確かめる | T-CODE:SM66(SM50 の「システム共通一覧」でも同じ)で、システムのすべての AS インスタンスのワークプロセスを確かめます |
| 止まっている処理を終わらせる | 紹介する操作は照会だけです。プロセスのキャンセルは別のユーザのセッションに影響が出るおそれがあるので、実行する前にシステムの管理者に相談するとよいでしょう |
ワークプロセスの種類
SAP の処理は、AS インスタンスの中のワークプロセスが受け持ちます。ワークプロセスには、受け持つ処理ごとに種類があります。
| タイプ | 種類 | 受け持つ処理 |
|---|
| DIA | ダイアログ | 画面の操作や RFC などの要求 |
| UPD | 更新 | 時間的に重要な更新(U1) |
| UP2 | 更新 2 | 遅延してもよい更新(U2) |
| BTC | バックグラウンド | バックグラウンドジョブ |
| SPO | スプール | 印刷(スプール) |
SM50 と SM66 の違い
| T-CODE | 表示する範囲 |
|---|
| T-CODE:SM50 | いまログオンしている AS インスタンスのワークプロセス |
| T-CODE:SM66 | システムのすべての AS インスタンスのワークプロセス |
T-CODE:SM66 を呼ぶと、T-CODE:SM50 のシステム共通一覧(全インスタンスの一覧)が開きます。種類・ステータス・ユーザなどでワークプロセスを絞り込める以前の画面は、T-CODE:SM66_OLD で開けます。
インスタンスごとの一覧(SM50)と、システム全体の一覧(SM66)の関係です。
関連するトランザクションコードは次のとおりです。
| T-CODE | 内容 |
|---|
| T-CODE:SM50 | AS インスタンスのワークプロセス |
| T-CODE:SM66 | グローバルワークプロセス概要 |
| T-CODE:SM66_OLD | グローバルワークプロセス概要(以前の画面) |
| T-CODE:SM51 | 起動済 AS インスタンス |
インスタンスのワークプロセスを確かめる(T-CODE:SM50)
1. SM50 を開く
コマンドフィールドに SM50 と入力して Enter キーを押します。「AS インスタンス mmc-s4sap05_FAA_00 のワークプロセス」が表示されます。
画面の見方
- 情報領域: ワークプロセスの合計数と、種類ごとの数・空きの数・平均負荷です。
- 列: 番号・タイプ・プロセス ID・ステータス・CPU 時間・処理時間・優先度・実行中のプログラムの名称などです。
- 実行中のワークプロセス: いま処理をしているワークプロセスです。
- システム共通一覧: システムのすべての AS インスタンスのワークプロセスを表示します。
一覧は開いた時点の状態です。最新の状態を見るには「リフレッシュ」を押します。
2. 空きと負荷を確かめる
①の情報領域では、「15 / 14 (合計/空き)」のように、ワークプロセスの数と空いている数が種類ごとに表示されます。平均負荷は、直近 1 分・5 分・15 分の間に、その種類のワークプロセスが平均で何プロセス分フルに使われていたかです。
この例では、次のとおりです。
| 種類 | 合計 / 空き | 平均負荷(1 分 / 5 分 / 15 分) |
|---|
| ダイアログ | 15 / 14 | 0.255 / 0.320 / 0.371 |
| 更新 | 2 / 2 | 0.000 / 0.003 / 0.026 |
| バックグラウンド | 10 / 10 | 0.368 / 0.235 / 0.387 |
| スプール | 1 / 1 | 0.001 / 0.000 / 0.000 |
ダイアログの空きが 0 に近い状態が続くときは、ワークプロセスの数が足りているか、長く動き続けている処理がないかを確かめるとよいでしょう。
3. 各ワークプロセスの状態を確かめる
②の列で、1 つ 1 つのワークプロセスの状態を確かめます。
| 列 | 内容 |
|---|
| タイプ | ワークプロセスの種類(DIA・UPD・BTC など)です。 |
| プロセス ID | OS のプロセス ID です。OS のコマンドでプロセスを扱うときに使います。 |
| ステータス | 待機中(要求を待っている)・実行中(処理をしている)などです。 |
| WP エラー数 | インスタンスの起動から、ワークプロセスが失敗した回数です。管理者による終了も数えます。 |
| CPU 時間 | ワークプロセスの起動から使った CPU 時間です。 |
| 処理時間 | いまの要求を処理している時間(秒)です。 |
| 優先度 | 高(画面の操作と内部の処理)・中(画面の操作からの RFC)・低(バックグラウンドジョブとそこからの RFC)です。 |
この例では、③の番号 1 の DIA が「実行中」で、優先度は「高」、実行中のプログラムは CL_SERVER_INFO================CP です。ほかのワークプロセスは「待機中」です。この例では、優先度は実行中のワークプロセスにだけ表示されています。処理時間が長いワークプロセスがあれば、プログラムの名称から、何の処理が動き続けているかを確かめるとよいでしょう。
行をダブルクリックすると、そのワークプロセスの詳細(統計・SQL 文・ABAP スタックなど)が表示されます。
システム全体のワークプロセスを確かめる(T-CODE:SM66)
コマンドフィールドに SM66 と入力して Enter キーを押します。SM50 の④「システム共通一覧」からも、同じ一覧を開けます。
画面の見方
- タイトル: システムのすべての AS インスタンスのワークプロセスが表示されます。
- ASInstance: ワークプロセスがどの AS インスタンスのものかです。
- インスタンスへの切替: AS インスタンスごとの一覧(SM50 の画面)に切り替わります。
この例では、システム FAA の AS インスタンスは mmc-s4sap05_FAA_00 の 1 つだけなので、SM50 と同じワークプロセスが並びます。どのワークプロセスが実行中かは、開くたびに変わります。AS インスタンスが複数あるシステムでは、どのインスタンスでワークプロセスが埋まっているかをこの一覧で確かめられます。
よくあるつまずき
- 一覧の値が変わらない: 一覧は開いた時点の状態です。「リフレッシュ」を押すと最新の状態になります。
- SM66 を開いたら以前と画面が違う: T-CODE:SM66 は、SM50 のシステム共通一覧に移っています。以前の画面は T-CODE:SM66_OLD で開けます。
- 止まっている処理を終わらせたい: SM50 の一覧からプロセスのキャンセルやセッションの削除もできますが、操作する時点で、目当てのセッションがまだそのワークプロセスで動いているとは限りません。別のユーザのセッションに影響が出るおそれがあります。実行する前に、システムの管理者に相談するとよいでしょう。
まとめ
- T-CODE:SM50 では、ログオン中の AS インスタンスのワークプロセスの種類・ステータス・実行中のプログラムを確かめます。
- 情報領域で、種類ごとの空きの数と平均負荷を確かめます。
- T-CODE:SM66 では、システムのすべての AS インスタンスのワークプロセスをまとめて確かめます。
空きの数と、実行中のプログラムを見ればいいんですね!
うむ。インスタンスが複数あるなら、SM66 でまとめて見るのじゃぞい。