daemontoolsがCPUを使い過ぎる件
以前から気になっていたのですが、なかなか時間が取れなかったのと、そもそもの根本原因を突き止めきれなかったのでほったらかしにしていたdaemontoolsの負荷の問題がようやく解決しそうです。
MacOS X 10.4 (Tiger)をwebサーバやらメールサーバに使っているのですが、qmailを使うときに定番の、プロセス監視プログラム"daemontools"が異常にCPUの負荷を食うのです。
そのおかげで、ApacheからMySQLへのアクセスが異常に遅くなりタイムアウトする事しばしばで、ブラウザでページを見たときにページが表示されないという状況が多々発生し、サーバとしてはまったく使い物にならない状況でした。
なので、マシンを再起動した後にはかならずsvscanbootやらsvscanやら、superviseなどをいちいち全部手でkillし、とりあえず運転をしていたのですが、これではdaemontoolsを使っている意味が全くありません(汗)
たぶん何か問題があるはず、と思い、いろいろと調べていたのですが、まさかTigerのカーネルにバグがあるとは思いもよりませんでした。サーバとかではなく、普通の個人ユースでは問題にならないはなしですもんね。
ひょんなことで、知人の方の日記でその事を知り、「そうそう!まさにそれ!」と飛びついたのでした。
どーもはなからTigerを疑う事をしなかったので、見つけきれなかったようです。
以下のURLによると、"named fifoのPOLLINが常にPOLLNVALを返すので、daemontoolsはスリープする事無く、CPUリソースを食いつぶしながら延々とループを繰り返す"のだそうです。
supervise broken on MacOS 10.4 (Tiger)
なるほどー。svscan.cのソース最後の方にあるsleep(5)をだめもとでsleep(30)にしてみましたが、なんの効果もなかった訳だ(汗)
さっそく/package/admin/daemontools/compile以下で
% make clean
% make
してから、/package/admin/daemontools/command以下にある実行イメージを全て入れ替えて、daemontoolsの再起動。
% /package/admin/daemontools/command/svscanboot &
その後、アクティビティモニタでCPU負荷を見てみると、daemontoolsを動かす前と動かした後で殆ど負荷の高さに変化が見られません!ばっちりです!
これでようやく再起動したときや、UPSがサーバを再起動したときにサービスがきちんと復旧できそうで安心しました。
コメント
TrackBack URL : http://www.sailweb.net/modules/wordpress/2008/01/20/163/trackback/
この投稿には、まだコメントが付いていません
コメントの投稿
改行や段落は自動です
URLとメールアドレスは自動的にリンクされますので、<a>タグは不要です。
以下のHTMLタグが使用可能です。
<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <br> <code> <em> <i> <strike> <strong>
改行や段落は自動です
URLとメールアドレスは自動的にリンクされますので、<a>タグは不要です。
以下のHTMLタグが使用可能です。<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <br> <code> <em> <i> <strike> <strong>



