PDF

CallManager サーバ:メモリ リークの問題を解決するために
PsList を使用する
目次
概要
前提条件
要件
使用するコンポーネント
表記法
背景説明
用途
Cisco CallManager サーバにおける PsList の設定
関連情報
概要
このドキュメントでは、PsList ユーティリティを使用して Cisco CallManager サーバのメモリ リークの問題を解決する方法に
ついて説明します。Windows オペレーティング システムではパフォーマンス モニタ ユーティリティがサポートされており、管
理者はこれを使用して処理 CPU とメモリ使用に関する詳細情報を表示します。ただし、パフォーマンス モニタ ユーティリティ
の起動後に開始されたプロセスのメモリ使用は考慮されません。PsList ではこのギャップが埋まります。
注: PsList は無料ユーティリティです。SysInternals
からダウンロードできます。
前提条件
要件
次の項目に関する知識があることが推奨されます。
Windows オペレーティング システム
Cisco CallManager
Windows パフォーマンス モニタ
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づくものです。
Cisco CallManager
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。このドキュメントで使用するすべて
のデバイスは、クリアな(デフォルト)設定で作業を開始しています。対象のネットワークが実稼働中である場合には、どのよう
な作業についても、その潜在的な影響について確実に理解しておく必要があります。
表記法
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
背景説明
PsList のデフォルト動作では、ローカル システムで現在動作しているすべてのプロセスの CPU 中心の情報が表示されます。プ
ロセスごとにリストされる情報には、プロセスの実行時刻、カーネル モードとユーザ モードでのプロセス実行時間、OS がプロ
セスに割り当てた物理メモリ量が含まれます。コマンドライン スイッチにより、メモリ中心のプロセス情報、スレッド統計、3
種類すべてのデータのいずれかを表示できます。
用途
ユーティリティの形式は次のとおりです。
pslist [-?] [-d] [-m] [-x][-t][-s [n] [-r n]][\\computer [-u username] [-p password]] [name | pid]
それぞれのパラメータについて、次のリストで詳しく説明します。
-?サポートされるオプションおよび出力値に使用される単位が表示されます。
-dこのスイッチでは、システムでアクティブなすべてのスレッドの PsList show 統計が表示され、そのプロセスでスレッド
がまとめられます。
-mこのスイッチでは、デフォルトの CPU 中心の情報ではなく、PsList show memory を中心とした情報がプロセスごとに表
示されます。
-xこのスイッチでは、指定したプロセスごとに、CPU、メモリ、スレッドの情報が表示されます。
-tプロセスのツリーが表示されます。
-s [n]タスク マネージャの更新モードと同じようなモードで PsList が動作します。動作する秒数を任意に指定してこのモ
ードを中断するには、Esc キーを押します。
-r nタスク マネージャ モードの秒単位の更新レートです(デフォルトは 1)。
nameシステムで動作しているすべてのプロセスをリストする代わりに、指定プロセス名で始まるプロセスに PsList のスキ
ャンを絞り込みます。たとえば pslist exp では、「exp」で始まるすべてのプロセスの統計が表示されます。これには
Explorer が含まれます。
-uこのパラメータはユーザ名を表します。リモート システムのプロセスを削除するが、実行しているアカウントにリモート
システムの管理者権限がない場合は、このコマンド ライン オプションを使用して管理者としてログインする必要がありま
す。-p オプションを指定してパスワードを含めない場合は、PsList によってパスワードを求められますが、入力したパス
ワードは画面に表示されません。
-pこのパラメータはパスワードを表します。このオプションにより、コマンド ラインでログイン パスワードを指定できる
ので、バッチ ファイルから PsList を使用できます。アカウント名を指定して -p オプションを省略した場合は、PsList
によって対話形式でパスワードを求められます。
\\computerローカル システムのプロセス情報が表示されるのではなく、指定した NT/Windows 2000 システムの情報が表示さ
れます。自分のセキュリティ クレデンシャルではリモート システムからパフォーマンス カウンタ情報を取得できない場合は、
モート システムにログインするためのユーザ名とパスワードを -u スイッチで指定してください。
pidシステムで動作しているすべてのプロセスをリストする代わりに、指定したプロセス ID(PID)のプロセスのみに
PsList のスキャンを絞り込みます。たとえば pslist 53 では、PID が 53 であるプロセスの統計が表示されます。
Cisco CallManager サーバにおける PsList の設定
Cisco CallManager サーバで PsList を設定するには、次の手順を実行します。
1. メモ帳などのアプリケーションでバッチ ファイル(memory.bat)を作成します。バッチ ファイルの内容は次のとおりで
す。
echo %date% %time% >>c:\cron\mem.txt
c:\dnld\pslist.exe -m >>c:\cron\mem.tx
2. Cisco CallManager サーバで Task Scheduler サービスを有効にします。
a. [Start] > [Programs] > [Administrative Tools] > [Services] を選択します。
b. [Task Scheduler] を右クリックします(図 1 の矢印 A を参照)。
c. ポップアップ ボックスから [Start] をクリックします(矢印 B を参照)。
図 1: サービス
3. 定期的に実行するようにバッチ ファイルをスケジュールします。
間隔を 10 分にすることを推奨します。この間隔は、問題の必要性に従って調整できます。実行には数秒しかかからないの
で、負荷は増加しません。
a. [Start] をクリックして [Settings] にカーソルを合わせ、[Control Panel] をクリックします。
b. [Scheduled Tasks] をダブルクリックします。
c. [Next] をクリックします。
d. [Browse] をクリックします。
e. ナビゲートして、スケジュールするプログラムを選択します。
この場合、ディレクトリは cron(図 2 の矢印 A を参照)、プログラムは mem.txt(図 2 の矢印 B を参照)です。
図 2: スケジュールするプログラムの選択
f. [Open] をクリックします。
注: タスク ウィザードを使用する場合は、[Open advanced properties for this task when I click Finish] をオ
ンにしてから [Finish] をクリックして作業を続けます。
g. このタスクの名前を入力します。
h. [Daily] をクリックします。
i. [Next] をクリックします。
j. このタスクを開始する日時を選択します。
k. [Next] をクリックします。
l. ユーザの名前とパスワードを入力します。タスクは、そのユーザが開始したものとして実行されます。
m. [Next] をクリックします。
n. [Open advanced properties for this task when I click Finish] をオンにしてから [Finish] をクリックし、作業
を続けます。
o. [Schedule] をクリックします。
p. [Advanced] をクリックします。
q. [Repeat task] をオンにし、タスクを繰り返す時間(分または時間)を指定します。
r. [OK] を 2 回クリックします。
4. 使用量の拡大を待機します。
5. ログを収集します。PsList の実行のたびに、次のように出力されます。
Process memory detail for EVOICE-R16-CM1:
Name
Idle
System
SMSS
CSRSS
WINLOGON
SERVICES
..
..
Pid
0
8
204
232
256
284
VM
0
1676
5256
30880
35580
127396
WS
16
224
376
2604
1296
89808
Priv Priv Pk
0
0
24
164
1076
2760
1556
1592
7084
8800
4032
6636
Faults
1
562211
886
2333
16883
6713985
NonP Page
0
0
0
0
1
6
7 61
66 35
622 122
13:15:29.35
注: 終了したら、スケジュールしたジョブを無効にしてください。無効にしないと、ログでディスクがいっぱいになりま
す。
6. ログを解析してインスタンス番号を各行の先頭に付けるには、pslistmem.pl スクリプトを使用します。
#!/usr/bin/perl
$inst=0; #init var to count number of instances
$tinfo=""; #init var to store date/time info
while($_ = <STDIN>){
#if this line contains a timestamp like 11:11:11.11
if (/(\d+:\d+:\d+.\d+)/){
$inst++;
#increment the instance counter
$tinfo=$_; #save time/date to append to all rows of this instance
next; # skip to next line of input
}
#if this line contains a word followed by at least 8 numbers
if (/((\w)(\s)+(\d)+(\s)+(\d)+(\s)+(\d)+(\s)+(\d)+(\s)+(\d)+(\s)+(\d)+(\s)+(\d)+(\s)+(\d)+)/){
tr/\r\n//d; #strip CR LF to keep the date/time on the same line
print "$inst\t$_\t$tinfo"; # print instance counter, input line,
then date/time for this instance
next; # skip to next line of input
}
このスクリプトにより、PsList からの出力の最初のセットでは、すべての行の先頭に番号 1 が付きます。2 番目のセット
では番号 2 が付きます(図 2 の矢印 A、B、C を参照)。ヘッダー行は取り除かれます。このため、PID で並べ替えて、最
初の列を使用して行を一時的な順序にすることができます。
注: この Perl スクリプトを実行するには、ActivePerl などの Perl インタープリタを www.activestate.com からダウン
ロードする必要があります。
7. 次の出力が示すように、pslistmam.pl スクリプトを起動します。
cat mem.txt | pslistmem.pl | sort -k 3 >out.txt
Mem.txt と out.txt はそれぞれ、pslistmem.pl の入力ファイルと出力ファイルを表します。出力はプロセス名で並べ替え
られます。出力ファイル(図 3 を参照)の列 1 は先頭に付けられたセット番号、列 2 はプロセス名、列 3 はプロセス
ID、列 4 は仮想メモリ(VM)、列 5 はワーキング セット(WS)、列 6 はプライベート バイト カウント、列 7 はプライ
ベート バイト カウントのピークです。VM、WS、プライベート バイト カウントの傾向を監視すると、特定のプロセスによ
るメモリ消費の一般傾向が分かります。
図 3: PsListMem.pl スクリプトの出力
関連情報
PsList ユーティリティのダウンロード
Perl のダウンロード
音声に関する技術サポート(英語)
音声と IP 通信製品サポート(英語)
Cisco IP Telephony のトラブルシューティング
テクニカルサポートとドキュメント - Cisco Systems
1992 - 2014 Cisco Systems, Inc. All rights reserved.
Updated: 2013 年 9 月 3 日
http://www.cisco.com/cisco/web/support/JP/111/1119/1119268_pslist-j.html
Document ID: 66967