doudonn WEB制作やサーバーの話とかいろいろ

Nginxのエラーログ「no live upstreams while connecting to upstream」の原因と対策(ロードバランサ)

  doudonn 更新日:
Nginxのエラーログ「no live upstreams while connecting to upstream」の原因と対策(ロードバランサ)

Nginxをロードバランサとして使っています。
そのフロント側はエラーログなんてほとんど出ないのですが、
急に「no live upstreams while connecting to upstream」が出だした。

この対策方法を語ります。

このエラーログを対策

2018/10/20 02:14:14 [error] 26758#26758: *131598822 no live upstreams while connecting to upstream, client: xx.xxx.xxx.xxx, server: , request: "GET /archives/10 HTTP/1.1", upstream: "http://backend/archives/10", host: "parudou3.com"

サーバー名も無く、URLもアップストリーム名となる「backend」とおかしい。
「no live upstreams while connecting to upstream」は
「アップストリーム先が死んでるよ」といった意味です。

ようはバックエンドサーバーがダウンしている状態。
しかも時々起こるという、いったいどうした?というエラーです。

原因

バックエンド側で「return 444;」を使ったことが原因。

Nginx独自のエラーコードである「444」は、通信を即座に閉じます。
そのため、サーバーダウンと同じ状態になってしまう。
デフォルトだと10秒間は通信しないようになるので、10秒だけサーバーダウン状態に。
その間に訪れたユーザーは「502 Bad Gateway」の表示となり、このエラーログが書かれる。

なんてことない、自滅行為だった。

対策

「return 403;」に変更する。

403だと通常のにレスポンスがあり、アクセスログに出力されます。
これにてサーバーダウン状態には当然ならない。
一件落着です。

「444」はフロントエンド側で使うコード

444はバックエンド側では絶対に使ってはいけないコードです。
アクセス拒否系は面倒がらずにフロントエンド側に設定しよう。

この点にすぐ気づけたのも、access.log・error.logが役立ちました。
いつから発生したエラーか?と探すと、原因解明は簡単。
ログを見ないと気付かない症状なので、日々ログは確認していきたい。

Nginxの関連記事
サーバーの関連記事

記事一覧はこちら:サーバー

管理人について
doudonn
名前:doudonn(どうどん)
ひたすらWEB制作な人。
一応社長です。音ゲー好き

プロフィール
お知らせ

2022年11月30日に全記事削除しました。
無駄にページ表示速度にこだわってます。

役立ちサイト
wiki

プライバシーポリシー・広告について


© 2022-2024 doudonn All Rights Reserved.