人気ブログランキング | 話題のタグを見る

多分解決

なんでだろ~なんでだろ~
と、以前から頭を悩ませていたmysqldのゾンビプロセス大量発生問題。ファンが壊れてしばらく停止していたけれどファンを交換して復活したのでしばらくは安定して動作していたんですが、やはりゾンビプロセスは大量発生していた模様Orz 今日友人が「サイト繋がらないぞ」とツッコミを入れてくれました。
で、確認するとなんともはやかなりの期間放置してましたのでゾンビプロセスが502個Orz そりゃ処理出来んわな〜と思って早速
# /etc/init.d/mysql restart
で再起動しようとしたんですが、なんとエラーΣ
なんでも、メモリ不足でプロセス止められないよ〜とかなんとか。とはいえ放っとく訳にはいきませんので、致し方なく
# killall -KILL mysqld
で強制終了。で、なんとか全プロセスを殺しきった所でmysqlを再び起動したのですが、このままでは定期的にmysqlを再起動せねばならず、それは馬鹿馬鹿しいですよね。で、原因を再び調査し始めた訳です。
で、とりあえず広く浅く調べてみようということで
mysql defunct
のキーワードでぐぐる。と、トップに同じような症状に悩む本家の掲示板への書き込み発見(英語)。調べてみると、いきなり真相発覚!
MySQLはマルチスレッド処理を行うプログラムなのですが、その際キャッシュに残しておくスレッドの最大値を0に設定してあると私のような症状に陥ることがあるそうです。
で、自分のmysqlがどうなってるかを調べてみると、えぇばっちり0でしたともOrz
早速この値を適当に設定(とりあえずスレッド数5つで様子を見ることに)してmysqlを再起動。今のところ問題なくゾンビプロセスも発生していません。
ついでに調べていて分かったんですが、mysqldのプロセスが大量発生しているように見えたのは実際にはスレッドで、プロセス自体は1つらしいです。Kernel-2.4ではマルチスレッドのプログラムはプロセスがあるかのように表示されるので私が勘違いしていた模様。とはいえスレッドが500個も死んでたんだからそれはそれで大問題ですが^^;で、FC4はKernel-2.6なのでプロセスが1つしか見えなかったというのが真相のようです(Kernel-2.6ならマルチスレッドはプロセスが1つしか見えないのかどうかは未確認^^;)。
とりあえずはこれでゾンビスレッドが出来ずに動作しているようなのでしばらく様子を見てみることと染ます。あぁ、解決(?)してヨカッタヨカッタ^^

  by code_air_edge | 2005-12-10 00:44 | Linux関連

<< なるほど、そのタブ化は便利かも お、ようやくキーワード拒否が来た^^ >>

SEM SKIN - DESIGN by SEM EXE