#Что означает ошибка
socket hang up
Соединение закрыто удалённой стороной: тайм-аут, перезапуск сервера или лимиты прокси. Добавьте повторные попытки и таймауты.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Тайм-аут сервера | Прокси закрывает длительный запрос. | Сравните настройки тайм-аутов клиента и сервера. |
| Перезапуск | Сервис перезапущен во время соединения. | Проверьте журнал приложения и перезапуска. |
| Keep-alive | Повторное использование разорванного keep-alive. | Проверьте обработку ошибок клиента и агента. |
| Прокси | Корпоративный прокси сбрасывает соединение. | Сверьте сетевые журналы и правила доверенной сети. |
#Пошаговое решение
- Уточните, кто разорвал соединение
ECONNRESETиsocket hang upозначают, что TCP-соединение было сброшено или закрыто до завершения операции. В Node.js найдите полный стек, удалённый адрес и время; различайте ошибку HTTP-клиента, собственного сервера и обратного прокси. - Проверьте адрес и протоколВ терминале машины с приложением выполните
curl -v https://example.org/с настоящим адресом тестируемого сервиса (не отправляйте ключи доступа в командной строке). Сверьте HTTP/HTTPS, порт и сертификат; для TLS не устанавливайтеrejectUnauthorized: falseи не используйте-kкак решение. - Проверьте тайм-ауты и размер запросовЕсли разрыв только на длинных запросах, сопоставьте клиентский timeout, настройки Node.js и обратного прокси (Nginx/балансировщик) по журналам; длинные загрузки могут нарушать лимиты размеров тела. Изменяйте только подтверждённый предел и согласуйте его с администратором сервера.
- Добавьте корректную обработку разрываВ клиентском коде обрабатывайте событие
error, прекращайте повторные небезопасные POST без идемпотентности. Повторите запрос с небольшим объёмом и запишите HTTP-код или новую ошибку. При продолжающихся сбросах сравните серверные журналы по тому же времени.
#Если проблема осталась
Если «Node.js: ECONNRESET и socket hang up» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.