質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

2855閲覧

nginxで検出されたエラーがelbでは検出されない理由

renren643

総合スコア279

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/04/12 07:30

awsのelbの下にインスタンスがあって、その中でnginxとphpを稼働させているんですが、先日アクセスが重くなり、確認してみると、頻繁にtimed outのエラーが発生していました。30分間で100件ほどの以下のようなエラーがありました。

2020/04/xx xx:xx:xx [error] 1297#0: *15492593 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxxxxx, server: xxxxx.jp, request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock", host:

タイムアウトが発生しているということは、nginx=>elbに対して5xx系(timeoutなので504?)のエラーを返しているはずですが,この30分の間cloudwatchでelbの5xxx系エラーの返却した履歴が全くありません。
nginxでこのようなエラーが起きているのにelbではエラーが検出されない原因は何かあるでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ELBはEC2インスタンスに対してリクエストを振り分けたり、ヘルスチェックをしたりしていますが、EC2がELBに対して何かリクエストを送っているわけではないはずです。(厳密にはなにもないわけでないかもしれませんが…)
EC2からのレスポンスはELBを経由して帰るのではなく、クライアントにそのまま帰ります(プライベートサブネットにEC2インスタンスがある場合はNATを経由します)
5xx系のエラーということはサーバ側の問題なので、ELBに5xx系のエラーがないということはELBではエラーになっていないということですね。
なので、ELBによってリクエストは振り分けられたけど、EC2インスタンスの方で5xx系のエラーが出た、ということかと思います。

正しい挙動のように思えます。

投稿2020/04/12 11:41

編集2020/04/12 11:42
yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

renren643

2020/04/12 12:21

回答ありがとうございます。 >EC2からのレスポンスはELBを経由して帰るのではなく、クライアントにそのまま帰ります(プライベートサブネットにEC2インスタンスがある場合はNATを経由します) そうなんですか?ソースってありますでしょうか? プライベートサブネットですが、特にnatは設定してはいないはずですので、、、 ためにし、存在しないページにアクセスすると404が返ってきて、elbの4xx系のエラー記録にもしっかり記載がありましたがそれはどうなんでしょうか?
yu_1985

2020/04/12 14:50

> ELBを経由して帰るのではなく よく考えたら、この説明は正しくないかもしれませんね…。一旦忘れてください。 ちゃんと調べて後で修正します。 下記にELB(これはALBですが)のそれぞれのエラーの考えられる原因が書いてあります。 https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html#load-balancer-http-error-codes こちらを見ても、エラーの種類ごとにもう少し挙動を見る必要がありましたね。 504が記録されていたのであればそれはタイムアウトです。 504についても記載があります。 すべてを貼ることはしませんが、ざっくり言うとELBからEC2インスタンスにアクセスが到達できずにタイムアウトしたときに出るようです。 でもそこでエラーが出ていないということは、サーバにはリクエストは到達しています。 nginxのほうでエラーになっているのは、ELBはリクエストは振り分けたけど、サーバの方でタイムアウトになった、ということでしょう。 つまるところ、ELBには問題なかったけど後ろにあるEC2インスタンス側の処理に問題があったのでそのようにエラーが出た、と考えられます。 404のケースも読み解いてみようと思ったのですが、上記ページには記載がないのでフォーラムのリンクを持ってきました。 https://forums.aws.amazon.com/thread.jspa?messageID=899159&tstart=0# 4xx系のエラーはクライアント側に問題があった場合のエラーなので、ものによっては双方に記録されることになる、ということだと思っています。 ただ、それも確実ではないですね。ELBの仕様に対してのリクエストに問題があった場合は当然サーバまでリクエストが到達しないので、ELBにしかエラーが残らない(nginxのログには出ない)と思われます。 自分もなんとなくの感覚で考えてましたが、この辺もうちょっと調べてみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問