আমি চ্যাট ওয়েব অ্যাপের জন্য সকেট.ইও ব্যবহার করে একটি এক্সপ্রেস.জেএস অ্যাপ্লিকেশন চালিয়ে যাচ্ছি এবং 24 ঘন্টা সময়কালে আমি প্রায় 5 বার এলোমেলোভাবে নিম্নলিখিত ত্রুটিটি পেয়েছি। নোড প্রক্রিয়াটি চিরকালের জন্য আবৃত থাকে এবং এটি অবিলম্বে নিজেকে পুনরায় আরম্ভ করে।
সমস্যাটি হ'ল এক্সপ্রেস পুনরায় চালু করা আমার ব্যবহারকারীদের তাদের ঘরগুলি থেকে সরিয়ে দেয় এবং কেউ তা চায় না।
ওয়েব সার্ভারটি HAProxy দ্বারা প্রক্সি করা হয়েছে। সকেট স্থিতিশীলতার কোনও সমস্যা নেই, কেবল ওয়েবসকেট এবং ফ্ল্যাশসকেট পরিবহন ব্যবহার করে। আমি উদ্দেশ্য করে এটি পুনরুত্পাদন করতে পারি না।
নোডের সাথে এটি ত্রুটি v0.10.11
:
events.js:72
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET //alternatively it s a 'write'
at errnoException (net.js:900:11)
at TCP.onread (net.js:555:19)
error: Forever detected script exited with code: 8
error: Forever restarting script for 2 time
সম্পাদনা (2013-07-22)
উভয় জুড়ে যোগ করেছেন Socket.io ক্লায়েন্ট ত্রুটি হ্যান্ডলার এবং অপ্রকাশিত ব্যতিক্রম হ্যান্ডলার। দেখে মনে হচ্ছে এটি ত্রুটিটি ধরা পড়ে:
process.on('uncaughtException', function (err) {
console.error(err.stack);
console.log("Node NOT Exiting...");
});
সুতরাং আমি সন্দেহ করি এটি কোনও সকেট.ইও ইস্যু নয় তবে অন্য একটি সার্ভারের জন্য এইচটিটিপি অনুরোধ যা আমি করি বা মাইএসকিউএল / রেডিস সংযোগ। সমস্যাটি হ'ল ত্রুটিযুক্ত স্ট্যাকটি আমাকে আমার কোড সমস্যা সনাক্ত করতে সহায়তা করে না। লগ আউটপুট এখানে:
Error: read ECONNRESET
at errnoException (net.js:900:11)
at TCP.onread (net.js:555:19)
আমি কীভাবে জানতে পারি যে এর কারণ কী? আমি কীভাবে আরও ত্রুটি থেকে মুক্তি পেতে পারি?
ঠিক আছে, খুব ভার্বোজ নয় তবে লংজহনের সাথে স্ট্যাকট্রেস এখানে রয়েছে:
Exception caught: Error ECONNRESET
{ [Error: read ECONNRESET]
code: 'ECONNRESET',
errno: 'ECONNRESET',
syscall: 'read',
__cached_trace__:
[ { receiver: [Object],
fun: [Function: errnoException],
pos: 22930 },
{ receiver: [Object], fun: [Function: onread], pos: 14545 },
{},
{ receiver: [Object],
fun: [Function: fireErrorCallbacks],
pos: 11672 },
{ receiver: [Object], fun: [Function], pos: 12329 },
{ receiver: [Object], fun: [Function: onread], pos: 14536 } ],
__previous__:
{ [Error]
id: 1061835,
location: 'fireErrorCallbacks (net.js:439)',
__location__: 'process.nextTick',
__previous__: null,
__trace_count__: 1,
__cached_trace__: [ [Object], [Object], [Object] ] } }
এখানে আমি ফ্ল্যাশ সকেট নীতি ফাইল পরিবেশন করছি:
net = require("net")
net.createServer( (socket) =>
socket.write("<?xml version=\"1.0\"?>\n")
socket.write("<!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">\n")
socket.write("<cross-domain-policy>\n")
socket.write("<allow-access-from domain=\"*\" to-ports=\"*\"/>\n")
socket.write("</cross-domain-policy>\n")
socket.end()
).listen(843)
এই কারণ হতে পারে?