Passenger 暴走
Added by Haru Iida over 15 years ago
このサイトのPasenger が暴走しCPUとメモリを食いつぶしてしまう現象が多発。いろいろやったが解決しそうもないのでThin に乗り換えた。これで安定するか?
以下の現象と同じだろうか。
http://www.redmine.org/boards/2/topics/6865
Replies (6)
RE: Passenger 暴走
-
Added by Haru Iida over 15 years ago
今日もThinが暴走。PassengerやThinの問題ではなくRedmineの問題だろうか。
暴走時のstraceを取ってみた。
何かが無限ループしてるっぽい。
sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) brk(0x2fe55000) = 0x2fe55000 --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn() = ? (mask now []) --- SIGVTALRM (Virtual timer expired) @ 0 (0) --- sigreturn()
RE: Passenger 暴走
-
Added by Akiko Takano over 15 years ago
こんにちは!
フォーラムには初めて書き込みさせていただきます。
私もRedmine0.8.4をテスト環境で使っています。(現在は0.7xを使っていて、そちらのバージョンアップを検討中のため)
バージョンアップにあたって、幾つかプラグインを追加しているので、単純なmigrationでは済まないので、十分チェックしないといけません。
Passengerでの利用は未だ行ったことが無いので、このトピは参考にさせていただこうと思います。
さて、こちらは、mongrel(daemon mode)で動作させているのですが、どうも以下の問題にひっかかるようで、一定時間アクセスしないでいると、プロセスは落ちていないのに、アプリケーションが反応しなくなってしまいました。
[ Rails + MySQL (+ Mongrel?) でDB接続の通信が無い状態が続くとデッドロックする。]
http://d.hatena.ne.jp/koseki2/20070130/railslockup
とりあえず、cronで定期的にトップページをwgetするという安直な回避策をとってみたところ、反応が無くなるということは避けられているようです。
RE: Passenger 暴走
-
Added by Haru Iida over 15 years ago
Akiko Takano wrote:
さて、こちらは、mongrel(daemon mode)で動作させているのですが、どうも以下の問題にひっかかるようで、一定時間アクセスしないでいると、プロセスは落ちていないのに、アプリケーションが反応しなくなってしまいました。
そうなんですか!。そう言われてみると、こちらで暴走する時刻は朝5時とか明け方が多い気がする。同じ原因かもしれませんね。
貴重な情報ありがとうございます。
とりあえず、cronで定期的にトップページをwgetするという安直な回避策をとってみたところ、反応が無くなるということは避けられているようです。
こっちでもやってみます。ちなみにどれぐらいの頻度でwgetを実行してますか?
RE: Passenger 暴走
-
Added by Akiko Takano over 15 years ago
こちらのサイトはインターネットに公開されているので、アクセスが一定時間無い、ということも無いかとは思いますが...。
とりあえず、cronで定期的にトップページをwgetするという安直な回避策をとってみたところ、反応が無くなるということは避けられているようです。
こっちでもやってみます。ちなみにどれぐらいの頻度でwgetを実行してますか?
1時間に1回程度です(^^;
RE: Passenger 暴走
-
Added by Haru Iida over 15 years ago
Akiko Takano wrote:
こちらのサイトはインターネットに公開されているので、アクセスが一定時間無い、ということも無いかとは思いますが...。
さすがに朝5時ぐらいだとめっきりアクセスも少なくなります。このサイト、Thinのインスタンスを3つ立ち上げて負荷分散しているので明け方だと3つのうちどれか一つは全然リクエストが振られないってことがあるかもしれません。
とりあえず、cronで定期的にトップページをwgetするという安直な回避策をとってみたところ、反応が無くなるということは避けられているようです。
こっちでもやってみます。ちなみにどれぐらいの頻度でwgetを実行してますか?
1時間に1回程度です(^^;
Hudsonで1時間に1回wgetを実行するようにしてみました。いい感じみたいです。
http://www.redmine.org/boards/2/topics/6865#message-7157
でも1時間アクセスしなかったら暴走したみたいなコメントがありますね。