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.
0 yorum