手が震えたらBARに行こう

駄文を吐き出して、今日もなんとか、元気に生きていこうと思います。twitterアカウントは、@tabunmuri255です。よろしくです。

サービスが突然落ちて、「The page you are looking for is temporarily unavailable. Please try again later.」と表示されていた話

ある日、サービスにアクセスしてみたら、文字通り、
「The page you are looking for is temporarily unavailable. Please try again later.」
という無慈悲なメッセージが出ていた。

そんなわけで、トラブルシューティングの流れを書いてみる。
今回は、これでうまくいったけれども、次回、これでうまくいくとは限らない。

作戦1 ログを見てみる

Apatchにしろ、nginxにしろ、ログを出力するようになっている。
知っている限りだが、だいたい下記のような感じ

サービス名 ログの場所
Apatch /var/log/httpd/access.log
nginx /var/log/nginx/access.log

これらを見る。
この時、vimやlessで見ても構わないが、個人的には、tailfをおすすめする。
tailfは、テキストの内容が更新されたりすると、その更新がリアルタイムに反映されるコマンドだからである。
tailf - コマンド (プログラム) の説明 - Linux コマンド集 一覧表

これを使って、コンソール画面を眺めながら、何度か、例のエラーを吐いているwebページにアクセスしてみる。
すると、下記のようなエラーが出るばかり。

192.68.10.114 - - [1/Aug/2014:13:00:00 +0900] "GET /temp_test.php HTTP/1.1" 502 3695 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36" "-"
192.68.10.114 - - [1/Aug/2014:13:00:00 +0900] "GET /nginx-logo.png HTTP/1.1" 404 571 "http://192.168.100.131/temp_test.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36" "-"
192.68.10.114 - - [1/Aug/2014:13:00:00 +0900] "GET /poweredby.png HTTP/1.1" 404 571 "http://192.168.100.131/temp_test.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36" "-"

わかったのは、temp_test.phpにアクセスしようとすると、502だぜ。
って事と、他が404だったという事

ちなみに、エラーコードの内容は下記のような感じ。

エラーコード 内容
502 なんかサーバの中で問題が起きてて、バグってね?
404 指定されたファイルないYO

ここで、アクセスログには上記のヒントしかなかったという事になる。
→失敗

作戦2 google先生に聞こう

google先生に聞いてみた。
俺「google先生、【The page you are looking for is temporarily unavailable. Please try again later.】っていうエラーがでてるんだけど、なんか教えろ!」
google先生「下記のページを見るとよいぞなもし」

Nginx (日本語) - ArchWiki
nginxでerrorが出た場合 | OpenMediaLaboratory Blog

俺「ほう・・・。なるほどなるほど。」

ここで、話を整理すると、どうやら、こういう現象が出る原因としては、3つくらいあるらしい。
- fastcgiが落ちてる
- php-fpmが落ちてる
- ソケットが間違ったパーミッションに設定されている。

確かに、502のエラーコードを吐き出すに、あたっては、十分可能性として考えられる。
ということで、見に覚えがありそうな順番として、下記を上から順番に試しました。
-> nginxを再起動 ---> ダメ(で・・・ですよねー)
-> php-fpmを再起動 ---> 復活

ということで、これで、一応復活。
あと、ついでにDBも落ちているらしいということがわかったので、これも再起動。

これによって、復活・・・

_人人人人人人人人人人人_
>  完 全 復 活  <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

ということで、直りました。
よかったですー。