LoginSignup
3
2

More than 5 years have passed since last update.

Rails + Unicorn + Nginx + EC2 +ELBの構成でWebサイトにアクセスできないときの原因

Last updated at Posted at 2016-09-14

よくあるアプリの構成でサービスがダウンしているとき(Webブラウザを介してサービスを利用できないこと)、の原因をまとめてみました。

今回は特にWebアプリのインフラで遭遇しがちなものを想定しています。
自分が遭遇してきたケースです

Webアプリ構成

使用するもの
フレームワーク Rails
Webサーバー Nginx
その他サーバー Unicorn
ロードバランサー ELB
インフラ EC2

という構成でサービス運営しているとします。

この構成はRails + クラウドの構成でサービス作るときにありがちな構成かと思います。

原因その1: Unicornの停止

この状況かどうかの確認方法

web
sshログインしてunicornが動いているか確かめてみよう

EC2にログイン後

$ ps aux | grep unicorn

で確認してみましょう。

解決方法

unicornを起動しなおす。

参考)http://qiita.com/moonsubaru/items/09df180736f09c995954

原因その2: Nginxの停止

この状況かどうかの確認方法

また、sshログインしてnginxが動いているか確かめてみましょう。

EC2にsshログイン後

$ ps aux | grep nginx

を打ってみましょう。

解決方法

Nginxを再起動する

EC2にsshログイン後

$ nginx

としましょう。場合によっては sudo をつける必要があります。。

原因その3: EC2がELBから切り離されている

状況

WebサーバーがELBのヘルスチェックに応答できておらず、OutOfServiceになってしまった可能性が高いです。

この状況かどうかの確認方法

IPアドレスにWebブラウザからアクセスしてみて、画面が正常に表示される場合はこの状況です。

解決方法

ELBの応答に対して正しく応答するようにしましょう。

今回は応答できないということなので、

「サーバ側で重い処理が走っててレスポンスが遅い」

という場合なので2通りの対応をします。

重いプロセスをkillする

その処理が大事な場合どうするんだ、というのは置いておいて

$ kill <プロセスid>

で処理を停止できます。

ヘルスチェックの設定を変更する

AWSのマネジメントコンソールでEC2を選択した後、
サイドバーからロードバランサーを選びます。

sidebar.png

その後、「ヘルスチェック」のタブを選択し、「ヘルスチェックの編集」を押しましょう。
高度な詳細という項目を変更します。

「応答タイムアウト」を長くすれば、レスポンスの遅さに寛容になります。
「非正常のしきい値」、「正常のしきい値」も変えて調整するのもいいでしょう。

この編集はELBに紐付いたサーバーをInServiceにするための緊急対応なので、
正常稼働できる状態にサービスを戻したら、数値も元に戻しましょう。

最後に

Webブラウザでアクセスするとなんとなくわかったりします。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2