ECONNRESET i ECONNREFUSED: połączenie zerwane lub odrzucone
To systemowe błędy połączenia, które pokazuje Node.js i wiele innych programów. Jeden oznacza, że połączenie zerwano, drugi – że go nie przyjęto.
Zaktualizowano · Redakcja Prokso
- ECONNREFUSED oznacza, że połączenia nie przyjęto, a ECONNRESET, że je zerwano
- ECONNREFUSED prawie zawsze dotyczy połączenia z proxy: zły host lub port
- Skopiuj linię proxy z panelu klienta jeszcze raz i sprawdź host gw.prokso.com oraz port
Co oznacza błąd
Według dokumentacji Node.js ECONNREFUSED (Connection refused) oznacza, że połączenie się nie udało, bo maszyna docelowa aktywnie odmówiła. Zwykle dzieje się tak, gdy na zdalnym hoście pod tym portem nie działa żadna usługa.
ECONNRESET (Connection reset by peer) oznacza, że druga strona siłą zamknęła połączenie. Dokumentacja tłumaczy to utratą połączenia po zdalnej stronie z powodu timeoutu lub ponownego uruchomienia; najczęściej błąd pojawia się w modułach http i net.
Przy pracy przez proxy Twój program łączy się z proxy, a nie ze stroną. Dlatego ECONNREFUSED prawie zawsze dotyczy połączenia z samym proxy: jeśli odmówi strona, proxy zgłosi to własną odpowiedzią, na przykład kodem 502.
Przyczyny
- Nieprawidłowy host lub port proxy. Dla ECONNREFUSED: port spoza 823, 824 i 10000–20000 lub błąd w nazwie hosta.
- Program nie korzysta z proxy. Ustawienia proxy nie zostały zastosowane i program łączy się z innym hostem, gdzie nikt nie nasłuchuje na porcie.
- Zerwanie połączenia z urządzeniem wyjściowym. Dla ECONNRESET: adres rezydencjalny lub mobilny odłączył się od sieci, a port stałego IP otrzymał nowy IP.
- Strona zamknęła połączenie. Strona zrywa połączenie według własnego uznania, na przykład dla żądań ponad limit.
- Ponowne użycie zamkniętego połączenia. Program wysyła żądanie w połączeniu keep-alive, które druga strona już zamknęła.
Jak to naprawić
- Przy ECONNREFUSED skopiuj linię proxy z panelu klienta jeszcze raz i sprawdź host gw.prokso.com oraz port.
- Upewnij się, że program naprawdę łączy się przez proxy: zapisz w dzienniku adres, z którym się łączy. Przykład konfiguracji – w instrukcji Node.js.
- Przy ECONNRESET dodaj w programie ponawianie żądania z przerwą: na portach rotacji ponowienie pójdzie przez nowy IP.
- Zmniejsz liczbę równoległych wątków i tempo żądań do jednej strony.
- Jeśli ECONNRESET pojawia się przy długich zadaniach ze stałym IP, pamiętaj, że czas trwania sesji jest ograniczony – od 1 do 120 minut według ustawień portu.
Jak sprawdzić, czy działa
Wklej linię do sprawdzarki proxy. Jeśli połączenie przechodzi, host i port są prawidłowe, a przyczyny trzeba szukać w ustawieniach programu lub w zachowaniu strony.
Diagnoza w 2 minuty
Najpierw wklej linię do sprawdzania proxy. Jeśli tam proxy działa, przyczyna leży w programie lub jego ustawieniach. Jeśli nie - sprawdź linię z terminala:
curl -v -x "http://LOGIN:HASŁO@gw.prokso.com:823" https://api.ipify.org
- Wiersz
< HTTP/1.1 407zaraz poCONNECToznacza, że odpowiada proxy. Nazwa po kodzie, na przykładNO_USER, wskazuje przyczynę. - Proxy odpowiedziało na
CONNECTkodem 200, a potem przyszedł inny kod - proxy działa, tę odpowiedź dała strona. - Brak odpowiedzi, tylko przekroczony czas - połączenie nie dotarło do proxy: sprawdź host, port i sieć.
Instrukcje, w których pojawia się ten błąd
Pytania i odpowiedzi (FAQ)
Co robić, jeśli ECONNREFUSED pojawia się od razu na starcie?
Najprawdopodobniej program łączy się nie tam, gdzie trzeba: błędny port, host albo proxy nie zostało zastosowane. Sprawdź linię i ustawienia programu, a potem <a href="/pl/errors/err-proxy-connection-failed">błąd połączenia z proxy</a>.
Czy proxy jest winne ECONNRESET?
Niekoniecznie. Połączenie może zerwać strona, urządzenie wyjściowe lub Twoja sieć. Jeśli błąd występuje stale na wszystkich stronach, napisz do pomocy technicznej, podając godzinę i nazwę planu.
Czym ECONNRESET różni się od ETIMEDOUT?
ECONNRESET – połączenie zerwano jawnie. ETIMEDOUT – druga strona nie odpowiedziała na czas. O timeoutach – na stronie <a href="/pl/errors/proxy-timeout">timeout proxy</a>.
Inne błędy proxy
Rezydencjalne $1.59, mobilne $2.50, serwerowe $0.65 za 1 GB
Rejestracja w minutę, dostęp od razu po płatności.