ECONNRESET Hatası: Socket Kapatanı 5 Dakikada Bulmak

ECONNRESET hatası gördüğün zaman, soket kapatma sorunu genellikle üç yerden birinden geliyor: senin uygulamadan, karşı taraftan, ya da ortadaki bir ağ cihazından. Çoğu mühendis hemen tcpdump'a atlarken, daha hızlı bir yol var: zaten elin altında olan socket durumlarını okumak.

Pratik bir drill şöyle işliyor. Terminale bunu yaz:

ss -tn | awk '{print $1}' | sort | uniq -c | sort -rn

Çıktıda dört durum önemli. TIME-WAIT yüksekse, sen kapatmışsın (normal). Proxy'de binlerce iyiyken, yüz binler sorun. CLOSE-WAIT'in 100'den fazla olması garantili uygulama hatası demek: karşı taraf FIN göndermiş, ama senin process close() çağırmamış. SYN-SENT 100'ü geçerse, bağlantı kuramama var (firewall/yol sorunu). SYN-RECV artıyorsa, accept kuyruğu dolu ya da bir tarama oluyor.

Burada unutulmaması gereken: CLOSE-WAIT birikintisi her zaman kodun hatası. Network suçlu değil. Peer FIN attı, senin soket açık kaldı. Uygulamada resource leak var demek bu.

Bu dört satırı okuduktan sonra, 5 dakikada neyin yanlış gittiğini anlarsın. tcpdump'a geçmeden önce bu kontrol et.

konu hakkında tepkinizi verebilirsiniz