ECONNRESET (errno 104)

errno 104

LINUX

Messaggio ufficiale (come appare sullo schermo): Connection reset by peer

Cercato anche come: Connection reset by peer, errno 104, read ECONNRESET, socket hang up

Terminale Linux che esegue strace con la chiamata di sistema non riuscita e l'errno evidenziati
errno di Linux: individua la chiamata di sistema che fallisce prima di modificare qualsiasi cosa.

Che cosa significa

ECONNRESET, «Connection reset by peer» (errno 104 su Linux, 54 su macOS), significa che l'altro capo di una connessione TCP l'ha interrotta bruscamente con un pacchetto di reset. Node.js lo riporta come 'socket hang up' o 'read ECONNRESET'. Il server remoto, un proxy o un firewall ha chiuso la connessione mentre era in uso.

Si applica a: Linux, macOS (errno BSD), WSL, Container Docker

Come risolvere ECONNRESET (errno 104)

  1. Riprova la richiesta: i reset temporanei sono comuni sulle reti e vanno gestiti con tentativi ripetuti e backoff
  2. Verifica se il servizio remoto si è riavviato o è andato in crash in quel momento (log del server, health check)
  3. Allinea i timeout keep-alive: imposta il timeout di inattività del client più breve di quello del server o del load balancer, così il client non riutilizza mai una connessione già chiusa dal server
  4. Controlla le impostazioni TLS quando ti connetti a endpoint HTTPS: incompatibilità di protocollo o SNI causano reset durante l'handshake
  5. Cerca firewall, dispositivi NAT o proxy che interrompono le connessioni inattive e attiva il keep-alive TCP
  6. Cattura il traffico con 'sudo tcpdump -i any host <ip> and port <port>' per vedere quale lato invia l'RST

Perché succede

Un RST arriva quando il peer chiude un socket con dati non letti, va in crash, rifiuta la connessione a metà flusso, oppure quando un middlebox interrompe flussi inattivi o sospetti.

Domande frequenti

Che cosa causa 'read ECONNRESET' in Node.js?

Il server ha chiuso la connessione in modo imprevisto, spesso per il riutilizzo keep-alive dopo il timeout di inattività del server, per un crash o per problemi TLS.

Errori correlati

Fonte: Linux kernel errno.h · soluzioni scritte e verificate dalla redazione (vedi la nostra politica editoriale)

Ultimo aggiornamento: