Сервер приложений закрыл соединение, не ответив прокси
Ошибка nginx «upstream prematurely closed connection» перед Directum RX: сервис RX закрыл соединение раньше, чем отдал ответ. Пользователь получает 502. Причины: перезапуск сервиса, падение по памяти, разные таймауты keepalive.
Что это значит
nginx передал запрос в сервис Directum RX и ждал ответ, а сервис закрыл соединение, ничего не отправив. Пользователь получает 502 Bad Gateway или «Сервер недоступен» в веб-клиенте.
Причины: сервис в этот момент перезапускался или упал (например, по памяти), запрос попал в соединение keepalive, которое сервис как раз закрывал по своему таймауту, или сервис оборвал слишком долгий запрос.
Как проверить
- Совпадает ли время с перезапуском сервиса RX или пода.
- Журнал самого сервиса за ту же секунду: исключения, остановка, нехватка памяти.
- Если ошибки редкие и случайные, сравнить таймаут keepalive у nginx (
keepalive_timeoutв upstream) и у сервиса: у прокси он должен быть короче.
Что сделать
- Перезапуски и падения сервисов разобрать до причины, см. OOMKilled.
- В блоке upstream задать
keepalive_timeoutменьше, чем держит соединение сам сервис. - Готовые настройки прокси для RX есть в генераторе конфигурации.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать