Mongrel + RoRでこまった

どうもMongelが一度に一つのHTTPリクエストしか処理してくれません。

ソースをみてみると、ちゃんとクライアントからの接続要求があってaccpetするときにThreadを作っているので、マルチスレッドでちゃんとうごいているぽい。

しかしコントローラは同時に一つしか実行されないのですよ。

通常は問題ないのですが時間がかかる処理があったときなど、他の処理がまったく進行しないので、大人数で使いはじめたとたん偉い遅くなる予感。

スレッドがうまくきりかわってないのかなぁ?そうなるとOSの問題という可能性もありますが、いかにも切り替わってくれそうな、sleepとかいろいろ入れてみたりもしましたんですが、あまり変化もなく、うーむ。

そういう仕様なんですかねぇ。でもDB見に行ってないときくらい排他制御はしてほしくないし、何か設定するのかしらん?ググってもそれらしき情報もなく・・・ソースを見るしかないのか・・・orz

とりあえず、明日Linuxでやってみるか。

まぁとりあえず一ついえるのは楽なシステムなんて存在しないということw
RoRはまだまだノウハウ不足ですわ。とほほ
Posted by issei

カテゴリ: 雑記

コメント一覧

Mongrelって何じゃらほい? …ってググったら、mongrel_clusterとやらで負荷分散させるのに 皆さん格闘されてるらしい。 それ以前に「スレッド」とやらがカーネルスレッドなのか、ユーザスレッドなのか? LinuxとFreeBSDでは スレッドモデルが全然違うので、Linux用のスレッドプログラムを単純にFreeBSDに持って来てもマルチ スレッドでは動きません。NetBSDは更に違うし。諸悪の根源はPOSIXスレッドモデルがみかん星人過ぎた ことだと思う。
kaz

Kazさん> それはわかるんですが、どうもRoRというのは最近もっとも注目を浴びているエンタープライズサーバでしかも導入が簡単というすんばらしいシステムらしいんですよ。 でも、今回の現象はそういうわりには恐ろしくしょんぼりな状態なわけで、はてさて? その一方で世界中で使われ始めてる・・・らしい。 しかし、初っぱなから躓いているわけで、どこが簡単なのかと小一時間。 しかしこれだけ使われててRubyとかOSに問題があるとは考えにくい(しかも誰でも気がつきそう菜問題) となると、何か根本的に勘違いしているか、本当に間違っているかの二択なわけで・・ Ruby使いが近所にいれば楽なんですけどねぇ さすがに最近はソース追っかける気力が・・ ところで、ネットで調べてみたところ、Ruby自信は独自のスレッドを中にもってるようですよ。
Isami