セットアップ:
Angular / Django / Nginx in ECS.
Route 53 -> ELB -> Target group ECS
With Nginx proxying /api | /admin calls to Django.
一部のAPIリクエストには大きな遅延または遅延があり、次のログが表示されます:(読みやすくするために行が壊れています)
timestamp="16/Jul/2019:16:24:43 +0000"
client=10.96.192.168
request="GET /api/redacted/?
redacted=0&
redacted=52.895649&
redacted=53.226591&
redacted=-2.900391&
redacted=-1.873169 HTTP/1.1"
request_length=919
bytes_sent=200514
body_bytes_sent=200245
referer=https://redacted.redacted.redacted.redacted.redacted/redacted
user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
upstream_addr=127.0.0.1:8000
upstream_status=200
request_time=19.077
upstream_response_time=19.064
upstream_connect_time=0.000
upstream_header_time=19.064
app_db_read_time=-
app_db_write_time=-
app_analysis_time=-
app_other_time=-
主な遅延として私たちの目を引いたのはupstream_header_time
およびupstream_response_time
約20秒です!。
ただし、Nginxを初めて使用する場合は、どこからデバッグを開始すればよいかわかりません。ローカルで作業することで、このような遅延なしにすべてが期待どおりに機能します。
質問:この大きな20秒のアップストリームヘッダー/応答時間の原因は何ですか?
構成ファイル: https://Gist.github.com/jackdh/4fdffe6b11799f544d7cb211cc66bfe2
ありがとう
NGINXドキュメントによると:
$upstream_header_timekeeps time spent on receiving the response header from the upstream server (1.7.10); the time is kept in seconds with millisecond resolution. Times of several responses are separated by commas and colons like addresses in the $upstream_addr variable.
これがあなたのPythonバックエンドが答えるのに永遠にかかることです。