rshが<defunct>
お世話になります。
久しぶりの投稿になります。
現在、
1.8.3-1を安定して運用しております。
最近、
追加の検証環境にzabbix1.8.3-1サーバを構築しました。
ここで以下のような問題が発生しました。
現象:「zabbixサーバのrshコマンドがdefunctし、以後patlite.sh
が実行されなくなる。」
障害通知のお決まりの方法ですが、イベントを検知するとパトランプにrshコマンドを発行するようにしています。
別検証環境では全く問題がないのですがひとつ違っている事項と
言えば、zabbixサーバを導入したハードウェアのCPUが今回はXeonではなく
Core2Duoであるということでしょうか。
具体的に言いますと、
(すべてrpmで導入)
<<うまくいっている環境>>
CPU:Xeonを複数搭載
OS:VMwareESXi4.1上のCentOS5.5(64bit)
<<いかない環境>>
CPU:Core2Duo
OS:VMwareESXi4.1上のCentOS5.5(64bit)→ゲストOSはこれのみ
(rshの障害以外は問題なく動作。)
纏めますと、
一般的に仮想化サーバはCPUがXeon以外ではいくつかの制限が
発生するということです。VmotionではXeon同士が条件とか。
今回の問題がCPUにある可能性が高いのですがもしそれ以外で
注意すべき点をご指摘いただけるならお願いしたく思っています。
ここのForumで「rsh、defunct」などで検索しましたが特に
該当しなかったので質問しました。
よろしくお願いします。
TNK - 投稿数: 4760
なかなか同様の現象に関する情報をみつけることができていません。
ただ、defunctになるということは、そのプロセスを起動した親プロセスがきちんとシステムコールのwait()で後処理をしていない状態になっているようです。
今回、Zabbixからはシェルスクリプトを呼び出し、シェルスクリプト内からrshを呼び出しているような環境で、rshのプロセスがdefunctになっているという理解でよろしいでしょうか。
そうすると、rshがdefunctになっているということは、以下のような状態が発生していることが考えられます。
1.zabbix_serverからpatlite.shを呼び出す
2.patlite.shからrshを呼び出す
3.rshの処理が終了する前にpatlite.shが終了する
4.rshの処理が終了したが親プロセスが既に終了してしまっている
もしかして、rshをバックグラウンドで実行していませんか?
そうでなければ、zabbix_serverからpatlite.shを呼び出している最中で、patlite.shの処理が終了する前に処理が中断されているのかもしれません。
教えて頂きたいのですが、patlite.shの処理実行には、どのくらいの時間がかかりますか?
# そもそもzabbix_serverからのfork()で失敗しているのかなぁ?
# fork()で-1が返却されたときにエラーとなるような処理が無いような.....。
fine - 投稿数: 64
TNKさん
お世話になります。
遅れました。
そうです。
他環境でもこの方法です。
# ps alx でZ(zombi)を確認すると、
patlite.sh xxx.xxx.xxx.xxx -l user alert xxxxxx
rsh defunct
と当然セットになります。
バックグラウンドで実行ですか?
大まかな設定は
メディアタイプ→ユーザ→アクション
です。
コマンドで打っても成功するときでも何かワンテンポ遅れる感じですね。
新たな差異(訂正)があったんですが、
うまくいっているほうは
VMwareESXi4.0
いかないほうは
VMwareESXi4.1
と言う事です。
もちろんこれが原因かはまったく不明です。
VM環境含めてパトランプとかも確認をすることにします。
いつも本当にありがとうございます。