RubyがCPU喰いまくり
今やってるシステムで並列でRubyにCSVの取り込みをやらせているんだけど、CPUの処理時間を食いまくってどうしようもないです。
一つのプロセスが1CPUの50%程度の使ってしまうので、4CPU,4Gと贅沢なリソースを使っているのに8プロセス上げてしまうとサーバーがロックアウトして、一緒に上げているJavaのサーバーが応答しなくなってしまいます。
処理的にはCSVファイルをDBに流し込む簡単なモノなので、問題が入る混む余地は少ないし、プロファイルかけてもボトルネックが出てこないのでもうJRubyを使うくらいしかないのですがネイティブのライブラリを使っているのでそれもできないし...
同時に上げるプロセスを7つに抑えればスループットは下がるモノのロックアウトはしないのですが、4つもCPUを乗せていているのにあんまりにも悲しい状況です。
ちなみに使っているRubyは1.8.6です。1.9系はライブラリの依存関係が解決できなくて使えなかったです。
さすがに遅いのは覚悟していたけど、こんなに異様にCPUを消費するとは...とりあえずRubyにはバッチ処理はやらせちゃアカンらしいです。