ECONNRESET и ECONNREFUSED: соединение сброшено или отклонено

Это системные ошибки соединения, которые показывают Node.js и многие другие программы. Одна означает, что соединение оборвали, вторая — что его не приняли.

Обновлено · Редакция Prokso

Коротко
  • ECONNREFUSED значит, что соединение не приняли, а ECONNRESET значит, что его оборвали
  • ECONNREFUSED почти всегда касается подключения к прокси: неправильный хост или порт
  • Скопируйте строку прокси из личного кабинета заново и проверьте хост gw.prokso.com и порт

Что означает ошибка

По документации Node.js, ECONNREFUSED (Connection refused) означает, что соединение не удалось, потому что целевая машина активно отказала. Обычно так бывает, когда на удалённом хосте на этом порту не работает служба.

ECONNRESET (Connection reset by peer) означает, что другая сторона принудительно закрыла соединение. Документация объясняет это потерей соединения на удалённой стороне из-за тайм-аута или перезагрузки; чаще всего ошибка встречается в модулях http и net.

Через прокси ваша программа соединяется с прокси, а не с сайтом. Поэтому ECONNREFUSED почти всегда касается подключения к самому прокси: если откажет сайт, прокси сообщит об этом собственным ответом, например кодом 502.

Причины

  • Неправильный хост или порт прокси. Для ECONNREFUSED: порт вне 823, 824 и 10000–20000 или ошибка в имени хоста.
  • Программа не использует прокси. Настройки прокси не применились, и программа идёт на другой хост, где этот порт никто не слушает.
  • Обрыв соединения с исходящим устройством. Для ECONNRESET: резидентский или мобильный адрес ушёл из сети, и порт фиксированного IP получил новый IP.
  • Сайт закрыл соединение. Сайт обрывает соединение по своему усмотрению, например для запросов сверх лимита.
  • Повторное использование закрытого соединения. Программа отправляет запрос в соединение keep-alive, которое другая сторона уже закрыла.

Как исправить

  1. При ECONNREFUSED скопируйте строку прокси из кабинета заново и проверьте хост gw.prokso.com и порт.
  2. Убедитесь, что программа действительно идёт через прокси: выведите в журнал адрес, с которым она соединяется. Пример настройки — в инструкции Node.js.
  3. При ECONNRESET добавьте в программу повтор запроса с паузой: на портах ротации повтор пойдёт через новый IP.
  4. Снизьте число параллельных потоков и темп запросов к одному сайту.
  5. Если ECONNRESET приходит на долгих задачах с фиксированным IP, учтите, что длительность сессии ограничена — от 1 до 120 минут по настройкам порта.

Как проверить, что всё заработало

Вставьте строку в проверку прокси. Если соединение проходит, хост и порт правильные, и причину нужно искать в настройках программы или в поведении сайта.

Диагностика за 2 минуты

Сначала вставьте строку в проверку прокси. Если там прокси работает, причина в программе или её настройках. Если нет — проверьте строку из терминала:

curl -v -x "http://ЛОГИН:ПАРОЛЬ@gw.prokso.com:823" https://api.ipify.org
  • Строка < HTTP/1.1 407 сразу после CONNECT — отвечает прокси. Название после кода, например NO_USER, подсказывает причину.
  • Прокси ответил на CONNECT кодом 200, а дальше пришёл другой код — прокси работает, этот ответ дал сайт.
  • Никакого ответа, только тайм-аут — соединение не дошло до прокси: проверьте хост, порт и сеть.

Инструкции, где встречается эта ошибка

Вопросы и ответы

Что делать, если ECONNREFUSED появляется сразу при запуске?

Скорее всего, программа подключается не туда: неверный порт, хост или прокси не применился. Проверьте строку и настройки программы, а затем <a href="/ru/errors/err-proxy-connection-failed">ошибку подключения к прокси</a>.

Виноват ли прокси в ECONNRESET?

Не обязательно. Сбросить соединение может сайт, исходящее устройство или ваша сеть. Если ошибка сплошная на всех сайтах, напишите в поддержку с временем и названием плана.

Чем ECONNRESET отличается от ETIMEDOUT?

ECONNRESET — соединение оборвали явно. ETIMEDOUT — другая сторона не ответила вовремя. О тайм-аутах — на странице <a href="/ru/errors/proxy-timeout">тайм-аут прокси</a>.

Резидентские $1.59, мобильные $2.50, серверные $0.65 за 1 ГБ

Регистрация за минуту, доступы сразу после оплаты.

Создать аккаунт