概要
このドキュメントでは、Admin CLIを使用してログインした場合に、CUCM、IMnP、およびその他のCisco UC製品で見られるゾンビプロセスを使用する方法について説明します。
前提条件
要件
UCサーバのAdmin CLIの使用に関する知識があることが推奨されます。
- Cisco Unified Communications Manager(CUCM)
- Cisco Unified Instant Messaging and Presence Server(IMnP)
- Cisco Unity Connection Server(CUC)
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
ユニファイドコミュニケーションサーバは、基本的にLinux OSベースのアプリケーションです。Linux上でプロセスが停止した場合、そのプロセス記述子(PID)はメモリから即座に削除されるわけではなく、メモリ内に残り、メモリの量はごくわずかです。このプロセスは非アクティブなプロセスになり、プロセスの親に子プロセスが終了したことが通知されます。その後、親プロセスはdeadプロセスの終了ステータスを読み取り、それをメモリから完全に削除するはずです。wait()システムコールを使用して行うと、ゾンビプロセスがプロセステーブルから削除されます。これは、ゾンビプロセスを刈り取ることと呼ばれます。これは一般的に非常に迅速に行われるため、システム上にゾンビプロセスが蓄積しているとは思えません。
ただし、親プロセスがwait()シグナル呼び出しを行わないことがあり、子プロセスがクリーンアップされるまでメモリ内に留まります。つまり、ゾンビプロセスは実行が完了したプロセスですが、まだプロセステーブルにエントリがあります。親プロセスは引き続き子の終了ステータスを読み取る必要があります。
UCOS Admin CLIを使用したゾンビの確認
CLIから、show process loadコマンドを使用して、ゾンビの存在を確認できます。
ゾンビの手動トラブルシューティング/クリア
前述のようにPIDを保持するために使用される小さなメモリとは別に、ゾンビプロセスはシステムリソースを使用しませんが、プロセスIDは保持します。UCサーバでは、システムに提供されるメモリが大きいため、ゾンビの存在による他のプロセスのPIDがシステムで不足する可能性は非常に少なくなります。
したがって、システム上にゾンビを残しておいて、次のシステムのリブート時に自動的に消去されます。
ただし、システム内のゾンビをクリアする必要がある場合は、特定のアクションを実行できます
適切なサービスの再起動
関連するプロセスを特定し、その結果、子プロセスをリークするサービスを特定する必要があります。
- CLI出力から、show process listおよびshow process list detailの出力を取り出します。
- テキストエディタで出力をコピーし、ファイル内で「disct」というテキストを検索します。
- これらの廃止されたプロセスのプロセスID(pid)と親プロセスID(ppid)をメモします。
- ドキュメント内のppidを追跡して、関連するプロセスを見つけます。
例 1
CUCM:ファイルを検索して「dect」というテキストを探すと、PID 22908が存在することが分かります。
このPIDのppidは29815です。このドキュメントの29815を追跡すると、プロセスがAMCサービスに関連していることが分かります。
解決策:このノードでAMC(Alert Manager and Collector Service)を再起動すると、ゾンビがクリアされます。
例 2
CUCM:テキストがdectされた時、PID 10025が存在します。
このPIDのppidは26732です。ドキュメント内のトラッキング26732では、プロセスがTrace Collection Serviceに関連していることがわかります。
解決策:このノードでTrace Collection Serviceを再起動すると、ゾンビがクリアされます。
例 3
CUCM:テキストdectのファイルが検索されると、PID 23959が存在しなくなったことが分かります。
このPIDのppidは26764です。このドキュメントの26764を追跡すると、プロセスがCDR Repository service(cdrrep)に関連していることが分かります
解決策:CDRリポジトリサービスを再起動すると、このゾンビがクリアされます。
例 4
CUC:テキストが失効したファイルを検索すると、PID 325、370、387が3つ存在することがわかります。
これらすべてのPIDのppidは7827です。このドキュメントのトラッキング7827では、プロセスがConnection File Syncerサービスに関連していることがわかります。
解決策 – 接続ファイル同期サービスを再起動すると、ゾンビがクリアされます。
例 5
IMnP:テキストdectのファイルが検索されると、PID 1806が存在しなくなったことが分かります。
そのPIDのppidは1775です。このドキュメントのトラッキング1775で、プロセスが同じクラスタ内の別のIMnPノードへのSFTP接続であることがわかります。
解決策:IMnPでは、SFTPが所有する非アクティブなSSHプロセスが表示されることがあります。これらは表面的であることが判明し、サーバをリブートすると削除できます。
サーバをリブートします。
該当するサーバをリブートすると、プロセステーブル内のすべての古いエントリがクリアされ、その結果、システム内のゾンビがクリアされます。
親プロセスの強制終了
Linuxでは、ゾンビプロセスをSIGKILLシグナルを使って通常のプロセスが殺される方法で殺すことはできません。ただし、親プロセスは強制終了できます。このシナリオで使用するコマンドは次のとおりです。
kill -9 <ppid>
この回避策を実行するには、TACに連絡してください。重要なサービスが突然ダウンしないように、親プロセスを終了する際に注意してください。
確認
ゾンビがクリアされたら、同じコマンドshow process loadを使用してゾンビ数を確認します。