ECONNRESET (errno 104)
errno 104
الرسالة الرسمية (كما تظهر على الشاشة): Connection reset by peer
يُبحث عنه أيضًا باسم: Connection reset by peer, errno 104, read ECONNRESET, socket hang up
ماذا يعني
تعني ECONNRESET، أي 'Connection reset by peer' (errno 104 في Linux و54 في macOS)، أن الطرف الآخر من اتصال TCP أنهاه فجأة بحزمة إعادة ضبط (reset). يبلغ عنها Node.js بصيغة 'socket hang up' أو 'read ECONNRESET'. أغلق الخادم البعيد أو وكيل أو جدار حماية الاتصال أثناء استخدامه.
ينطبق على: Linux, macOS (BSD errno), WSL, حاويات Docker
كيفية إصلاح ECONNRESET (errno 104)
- أعد المحاولة؛ فعمليات إعادة الضبط العابرة شائعة في الشبكات ويجب التعامل معها بإعادة المحاولة والتراجع (backoff)
- تحقق مما إذا كانت الخدمة البعيدة أُعيد تشغيلها أو انهارت في ذلك الوقت (سجلات الخادم وفحوصات السلامة)
- وحّد مهلات keep-alive: اجعل مهلة خمول العميل أقصر من مهلة الخادم أو موزع الأحمال حتى لا يعيد العميل استخدام اتصال أغلقه الخادم فعلاً
- افحص إعدادات TLS عند الاتصال بنقاط HTTPS؛ فعدم تطابق البروتوكول أو SNI يسبب عمليات إعادة ضبط أثناء المصافحة (handshake)
- ابحث عن جدران حماية أو أجهزة NAT أو وكلاء تُسقط الاتصالات الخاملة، وفعّل TCP keep-alive
- التقط الحركة بالأمر 'sudo tcpdump -i any host <ip> and port <port>' لمعرفة أي طرف يرسل RST
سبب حدوثه
تصل حزمة RST عندما يغلق الطرف الآخر مقبساً فيه بيانات غير مقروءة، أو ينهار، أو يرفض الاتصال في منتصفه، أو عندما يقطع جهاز وسيط (middlebox) تدفقات خاملة أو مشبوهة.
الأسئلة الشائعة
ما سبب 'read ECONNRESET' في Node.js؟
أغلق الخادم الاتصال بشكل غير متوقع، وغالباً بسبب إعادة استخدام اتصال keep-alive بعد مهلة خمول الخادم، أو انهيار، أو مشكلات TLS.
أخطاء ذات صلة
المصدر: Linux kernel errno.h · حلول كتبها المحررون وراجعوها (راجع السياسة التحريرية)
آخر تحديث: