Я получаю несколько ошибок 502 в nginx:
2020/05/05 20:40:05 [ошибка] 13425 # 0: * 1360447 recv () не удалось (104: сброс соединения одноранговым узлом) при чтении заголовка ответа от восходящего потока, клиент: 172.31.12.13, сервер:, запрос: " POST /app/functionHTTP/1.1 ", восходящий поток:" http://127.0.0.1:8080/app/function ", хост:" example.com "
Архитектура:
client - load balancer - instances (each with nginx proxy for NodeJS http server)
Значения тайм-аута:
клиент:
- request timeout: 60s
балансировщик нагрузки:
- keepalive timeout: 60s
nginx:
- http keepalive_timeout: 65s
- upstream keepalive_timeout: 60 с
- upstream keepalive: 256 подключений
- proxy_connect_timeout: 60 с
- proxy_read_timeout: 60 с
- proxy_send_timeout: 60 с
сервер (NodeJS):
- request timeout: 50s
- keepAliveTimeout: 65 сек.
- headersTimeout: 70 с
Ошибка 502 возникает редко (~ 0,01% запросов), но постоянно.
Что я проверил до сих пор:
- Не достигнут предел файловых дескрипторов
- Лимит подключений nginx не достигнут
- Не достигнут предел TCP-портов
- Предел ЦП, памяти, дискового ввода-вывода не достигнут
Это очень похоже на состояние гонки, когда сервер NodeJS закрыл соединение, а nginx предполагает, что соединение все еще существует.
Какими будут правильные значения тайм-аута nginx в текущих настройках?
(Я не уверен, что это скорее вопрос ServerFault?)