2011年1月19日水曜日

SIGSEGV 11

原因がわからないまま長らく放置していたシステムの欠陥。
メモリリークが3つも見つかっている。

シチュエーションを書くとこのような状況である。

1.ESXi4.1 で動いてる
2.FreeBSD7.3
3.死ぬのはapache2.2.17/httpd
4.PHP5.3.4/守護神パッチ
5.firebird

この環境で valgrind を試してみたところ3箇所で
何らかの障害につながるリークが見つかる。

上記の環境組み合わせのうち、ESXi4 ではない環境では
まずメモリリークが起きない。

毎回 core吐かせる設定にしたら、毎回違うcoreで違う場所であるが
きちんとページイン出来てない orz なコードで死んでいる。

しかも、この壊れるのがページ離脱時なので実害が見えない。
で、メモリリークがかなり溜まってくると仮想側のシステムが
どーにかなるんだろうが、だいたいその時点でハングしている。

一応、現在の結論はIOエラーに落とし込んで来ているものの、
実証環境がレアな状態であるのが全く悔やまれる次第。

切り分けがハードウェアに近いところでのエラーである為に、非常に追いづらい。
というか、ハードウェアを疑わざる得ないが、単にハードウェアのみならず、
仮想化環境であることが、問題を複雑かつ解きにくくしている。

vmwareではない非仮想化サーバでは決して起きない現象であるから、
vmwareを止めろという結論を見たくないのだが、現時点では
ESXi4.1で色々なシステムを統合しようなんて話は当分できない。

ハードなアクセスがあるからこそ、実績のある仮想化環境を試したのだ。
こんな結論が出るのは残念だ。

0 件のコメント: