ランプの中身(Ruby on Railsのシステム開発)
ランプの中身(Ruby on Railsのシステム開発)では、株式会社ケイビーエムジェイのRuby on Railsエンジニアが蓄積したノウハウを公開しています。Ruby on Railに関する技術解説や実践的なノウハウなど、開発現場の技術に則したコンテンツを随時追加していきます。 初心者の方でもわかりやすい技術解説を心がけています。リクエスト、ご質問も受け付けいますので、ご気軽にコメントを記述して下さい。

< mysqlでレコード... |  メイン | エラー表示で意図しない改行を解消する−f... >

maiの中身(ruby
2008.02.29

mongrelとの戦い〜503エラー?mongrelが死んだってことさ…


mongrelがあまりにも死ぬのでdeploy恐怖症にまでなった初心者のmaiです。

mongrelってよく死にますよね。
体感的には10回restartしたら1回はダメになる感じです。
つい昨日もmongrelは沈黙しました。
もやしっこめ。

 そんなもやしっこmongrelを叩き起こす方法の一つを拙いながらもご紹介します。

Capistranoを使ってDeployすると、mongrelは自動でrestartしてくれるわけですが、
そのときの正常なログは↓のようなカンジ。

 ** [out :: 192.168.0.1] stopping port 3000
 ** [out :: 192.168.0.1] stopping port 3001
 ** [out :: 192.168.0.1] starting port 3000
 ** [out :: 192.168.0.1] starting port 3001

スッキリです。
mongrelの目覚めもバッチリです。
いつもこの調子で頑張ってほしいものです。

とはいえ、もやしっこのmongrelはたまにスッキリ立ち上がりません。
そのときのログはこちら。

*** [err :: 192.168.0.1] ** !!! PID file tmp/pids/mongrel.3000.pid already exists.  Mongrel could be running already.  Check your log/mongrel.3000.log for errors.
*** [err :: 192.168.0.1] ** !!! Exiting with error.  You must stop mongrel and clear the .pid before I'll attempt a start.
*** [err :: 192.168.0.1] ** !!! PID file tmp/pids/mongrel.3001.pid already exists.  Mongrel could be running already.  Check your log/mongrel.3001.log for errors.
*** [err :: 192.168.0.1] ** !!! Exiting with error.  You must stop mongrel and clear the .pid before I'll attempt a start.
 ** [out :: 192.168.0.1 stopping port 3000
 ** [out :: 192.168.0.1] stopping port 3001
 ** [out :: 192.168.0.1] starting port 3000
 ** [out :: 192.168.0.1]
 ** [out :: 192.168.0.1] starting port 3001
 ** [out :: 192.168.0.1] 

あきらかにエラー。
startingとかいってるけど、どっからどう見てもmongrelが生きてるとは思えません。
それでも一応、実は以外と元気です、というオチもあるかも!と思って
ブラウザで確認してみるも、当然のように503エラーです。

現実逃避はやめて、素直にエラー文を見てみると、

PID file tmp/pids/mongrel.3000.pid already exists.  Mongrel could be running already.  Check your log/mongrel.3000.log for errors

どうやら、「mongrel.3000.pid」というファイルを作ろうとしたけど、
すでに同じ名前のファイルがあったために作れませんと言いたいようです。

そこでサーバにある「tmp/pids/mongrel.3000.pid」というファイルを確認。
アプリのルートディレクトリまで行くと見つけられるはず。

[hogehoge pids]$ ls
mongrel.3000.pid  mongrel.3001.pid

いました。
このファイルたちはいてはいけない人たちなので、ご退場願います。

rm mongrel.300*

これでスッキリ。
lsコマンドで、pidsがカラッポになったのが確認できます。

最後にmongrelをstart。

 ** [out :: 192.168.0.1] starting port 3000
 ** [out :: 192.168.0.1] starting port 3001

 今度はスッキリパッチリ目覚めました。
ブラウザでも動作が確認できたので、mongrelの復旧作業はこれで終了。

 

今回学んだこと。

・mongrelはpidによって管理されている…らしい(学びきれてない)
・pidのファイルが居座ってると、killしたところでmongrelは復活しない…らしい
・エラーが起きたときは奇跡に頼らず、素直にエラー文と向き合うが吉

 今回気づいたこと。

mongrelってつい「mogrel」って打ってしまいがち。
…私だけ?

コメント (0)  |トラックバック (0)

ブックマークに追加する Subscribe with livedoor Reader あとで読む

トラックバック URL

この記事にコメントする

ニックネーム:
メールアドレス:
URL:


KBMJのWebソリューション
Ruby on Rails Summer Festival 2008開催決定!!

TOPICS

2008/06/25
ZD Net Builder」の連載記事です。第四回は「Rubyでどう書く?:重複したRSSをまとめる」が掲載されました。

2008/05/30
ZD Net Builder」の連載記事です。第三回は「Rubyでどう書く?:Rubyで特定URLの画像パス一覧を表示する」が掲載されました。

2008/05/07
ZD Net Builder」に連載を始めました。第二回は「Rubyでどう書く?:RubyでPDF履歴書を作成する」が掲載されました。

2008/04/24
アットマーク・アイティ」に『 Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する』が掲載されました。

カテゴリ

全体のRoR最新ブログ一覧

プロフィール

  • imai
  • rubyどころか開発すらも始めたばかりな超初心者のrailsとの格闘メモリー。
    初心者がつまづきそうなよくあるトラブルとか、意味不明としか思えない用語を初心者レベルに翻訳したりとかとかとか。

ブログの購読

RSS

timelog
株式会社ケイビーエムジェイロゴ