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

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