|
概要
NISMAILをStopNMail等のシェルスクリプトを実行し停止しようとした際、サーバマネージャプロセス(以下、dmmngプロセス)及びプロセス間メッセージ管理プロセス(以下、mpccプロセス)が停止しない事があります。
詳細
NISMAILはStopNMail等から停止コマンドが発行された際、dmmngプロセスが常駐している子プロセスである各制御プロセス(以下、子プロセス)に対し停止処理メッセージを発行します。メッセージを受けた子プロセスは各々の終了処理をした後に終了し、dmmngプロセスは子プロセスが終了したことをOSが発行するシグナル(SIGCHLD)を受け取ることにより終了確認を行います。全ての子プロセスのシグナルを受信し終えた後、NISMAILが停止します。
本件の原因は、OSが複数のシグナルを全く同時に発行するとき、シグナルを上書きして発行することにあります。このとき、上書きされたシグナルはキューイング処理が行われないために失われてしまいます。この場合、dmmngプロセスは全てのシグナルを受け取ることが出来ないため、まだ終了していない子プロセスが存在すると判断してシグナルを待ち続けます。このため、NISMAILが停止しない事象が発生する事が確認されています。
対策
本現象はNISMAIL停止時にのみ起きうる現象であり、通常運用時には問題は発生しません。NISMAILではプロセス表示コマンド(以下、ppコマンド)を提供しております。NISMAIL停止時には、停止処理を実行した後に、このppコマンドにて全てのプロセスが停止したかを確認して下さい。本現象が発生した場合(*1)、killコマンドにてdmmngプロセス及びmpccプロセスを強制終了してください。
(*1)現象発生時のppコマンド実行結果リスト
下図はdmmngプロセス及びmpccプロセスが停止していない状態

補足
本現象が発生したときに、上記の対処を行わずにNISMAILを起動をすると、NISMAILの二重起動が発生します。その結果、NISMAILの起動処理中にmpccプロセスが異常終了してファイル転送が行えないことがあります。
ppコマンドでNISMAILプロセスを確認して下さい。dmmngプロセスが2つある場合は、本件によってNISMAILの二重起動が発生している可能性があります。この現象が発生した場合、killコマンドにてNISMAILプロセスを全て強制終了して下さい。
状況
弊社ではこの問題をNISMAILの問題であると認識しております。
なお、この問題はVersion 5.0 Release 1.0で修正済みです。
|