является внешним эндпоинтом и обрабатывает все входящие извне запросы, при определённых услових проксируя (proxy_pass) некоторые запросы на nginx на втором сервере ("s2").
Исследую редко проявляющуюся ситуацию, когда:
1. Запрос приходит на s1 и проксируется на s2
2. В access_log на s2 вижу, что запрос был обработан, положим, в 12:00:00 и был возвращен ответ 200.
3. В error_log на s1 вижу запись от 12:00:10 в духе ... upstream timed out (110: Connection timed out) while connecting to upstream ...
4. Внешнему клиенту, в итоге, возвращается 504.
Вопрос: в какой именно момент времени nginx логирует свой ответ?
Согласно информации на странице https://docs.nginx.com/nginx/admin-guide/monitoring/logging/ :
> NGINX writes information about client requests in the access log right after the request is processed.
Правильно ли я понимаю, что описанная мною выше ситуация, по сути, возможна только в случае, если сокет (TCP сессия) был разорван где-то посреди передачи HTTP response от s2 к s1?
Timeout-ы увеличить полезно будет, если бэкенд сервис долго обрабатывает запросы
1. На бэкенде логируется время обработки апстримом, и там видно, что время обработки составляло доли секунды. 2. В первом сообщении описал, что бэк логирует свой ответ на 10 секунд раньше, чем фронт логирует connection timed out.
1. $request_id 2. дампи трафик и смотри сессию
Обсуждают сегодня