【Munin】Timeout waiting for output from CGI script … munin-cgi-graph への対処

【Munin】Timeout waiting for output from CGI script … munin-cgi-graph への対処 はてなブックマーク - 【Munin】Timeout waiting for output from CGI script … munin-cgi-graph への対処


◆ munin-cgi-graph (1.4) で急に画像生成できなくなった時。

ちょっとハマったので、φ(..)メモメモ

月曜の朝。いつもどおり出勤して、Munin 1.4 でサーバの環境をチェックしようと、URL を叩く。いつもなら色鮮やかな画面が出てくるのに、今日は、画像がでない。本来有るべき場所には、なにもない。この環境は、munin-cgi-graph によって、動的に画像生成しているのだが。

Munin のログを見ても、問題無く munin-update.log は更新されているようだし、ノードも正常に応答している。はて。

Munin がデータを取得出来ているのであれば、画像生成が原因か?と調査を始める。まずは、Apache の error_log を見ると…あったあった。

[Mon Jun 25 10:02:56 2012] [warn] [client kosmos] Timeout waiting for output 
from CGI script /var/www/cgi-bin/munin-cgi-graph, referer: http://kosmos.pocketstudio.jp/front/

このように、munin-cgi-graph がエラーを吐いているのが分かる。たしかに、ブラウザで画像の URL ( munin-cgi-graph )にアクセスしてみると、しばらく待たされたあげく、Internal Server Error が出ていた。

◆ 結果と対処

いろいろ状況を追って見ると、朝方の Apache の logrotate 後にエラーが出はじめていた事が判明。Apache の再起動時が何かのトリガになったっぽい。そういえば、昔、perl で書かれたCGI が暴走して、セマフォが溜まったことがあったっけとか思い出す。そしたら、ネット上にも同様の事例を発見。

対策としては、apache を停止・起動しても、残りっぱなしのセマフォを特定し、開放してやること。まずは、停止。

# /etc/init.d/httpd stop
httpd を停止中:                                            [  OK  ]
# ipcs -s

------ セマフォ配列 --------
キー     semid      所有者  権限     nsems
0x00000000 2129921    apache    600        1
0x00000000 2162690    apache    600        1
0x00000000 2195459    apache    600        1
0x00000000 2228228    apache    600        1
0x00000000 2260997    apache    600        1
0x00015cfc 262151     apache    666        1

次に起動。

# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
# ipcs -s

------ セマフォ配列 --------
キー     semid      所有者  権限     nsems
0x00000000 2949120    apache    600        1
0x00000000 2162690    apache    600        1
0x00000000 2195459    apache    600        1
0x00000000 2228228    apache    600        1
0x00000000 2260997    apache    600        1
0x00015cfc 262151     apache    666        1

…よくみると、昨期と同じsemid 262151 が変動せず、残った間mになっている事を確認。

次は、ipcrm -s で開放。

# ipcrm -s 262151

このコマンドを実行直後、正常にグラフが書き出されるようになりました。

◆ 参考

Munin cgi graph timing out | Technically Tim
http://tim.purewhite.id.au/2011/09/munin-cgi-graph-timing-out/

Apacheがセマフォを使いきった際の復旧方法 | クラウド備忘録
http://www.cloud-memo.com/it/apache_semaphore/