Apache でエラー (reading from remote server)
Apache でたまに以下エラーが出ちゃう件。調べてもらったので自分でも再整理 code:text
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /XXX.
Reason: Error reading from remote server
あとで ちゃんと読みたいだけど、以下エラーを調査してもらった。感謝 よくあるのが SetEnv proxy-initial-not-pooled 1 を設定するのはとりえあずやばそう
影響反映が不明
code:text
要約するとコネクションプール的なのをApacheが使っていて、何らかのタイミングでバックエンド側が通信が終わる前にコネクションを閉じた時に競合が発生、この現象が発生するようです。
code:text
proxy-initial-not-pooled
この環境変数をセットすると、クライアントの最初の接続にはプールした 接続を使わなくなります。これは競合状態を原因とする "proxy: error reading status line from remote server" エラーメッセージを 回避します。競合状態は、プロキシがプールした接続をチェックした後、 プロキシの送ったデータがバックエンドに到達する前にバックエンドが接続を閉じると発生します。 この変数をセットすることでパフォーマンスが劣化することを知っておくべきです。 特に HTTP/1.0 のクライアントに影響します。
code:text
これは Apache 2.1 以降の機能で ProxyPass を利用する際に、コネクションプールを使うようになったのが原因です。
コネクションプールとは、リクエストの度にコネクションを生成するのではなく、コネクションを事前に用意しておいて再利用しようと言う考え方(仕組み)のことです。
コネクションを再利用することで、コネクションを生成する時にかかる(接続に必要とされる)オーバーヘットをカットして双方の負荷を軽減してくれます。
このエラーは事前に用意されたコネクションを使って接続しようとしたら、接続中にコネクションを切られてしまい接続できなかった時に発生するエラーだと思われます。
上記ページは proxy: error reading status line from remote server... というエラーだったんだけどほぼ同じ原因?
502 できてるかきにはなる…
今回のは特定ソースだけに発生してるっぽいからもしかしたら原因は違うかも…
とはいえ、該当箇所が細かい単位で update の リクエストが発生してるからそれ?
でもうちのAPIも結構同時にしてるきはする。一つのクライアントから同時だから?
CSVが原因説もすててない
1行ずつかいてないかな?あ、でもCSVは既存で他でおきてないから問題ないのかー
うーん
というか、やばい実装が多すぎて調査多い /icons/どうして.icon
ただこうやって調査するのかーを横で感じて、勉強になる (と思いこむ)