تتبع هذه المشكلة https://github.com/Unitech/pm2/issues/2508
تكمن المشكلة في أنه إذا قمت بإعادة تشغيل خادم socket.io أو إعادة تحميله عبر pm2 ، فلا يزال لدي العديد من المقابس على الإنترنت (بقدر ما فهمت) ، ونتيجة لذلك لدي تحميل وحدة المعالجة المركزية وارتفاع الذاكرة.
أيضًا كنذير لهذه المشكلة ، بغض النظر عن الوضع (شوكة أو مجموعة) يعمل خادمي ، فإن عدد مآخذي النشطة يتزايد (بدون قفزات حادة ، على سبيل المثال: 4000 ، 3995 ، 4010 ، 4005 ، 4020 ، ولكن لا يزال باستمرار) مع مرور الوقت ، ما الذي يحتاج إلى المزيد والمزيد من الذاكرة ونتيجة لذلك لدي تسرب للذاكرة؟
حول عدد الاتصالات التي تتزايد باستمرار - إنها ليست مشكلة pm2 ، لقد رفضت nginx ، pm2 ، الكتلة وتركت مثيلًا واحدًا فقط أقوم بتشغيله على node.js الخالص باستخدام الأمر "node server.js" بدون أي معلمات. إذن ، من سيقرأ هذا في المستقبل ، فإن مشكلة الاتصال الخاصة بي ليست بسبب PM2.
تكمن المشكلة في عملاء الأجهزة المحمولة ، فهم يتجاهلون إعدادات الاتصال / إعادة الاتصال socket.io ، وعلى الرغم من أن الخادم كان غير متصل بالإنترنت لمدة 3 أيام ، إلا أنهم ما زالوا يقومون بإجراء اختبار pingin ، ثم يتصل الخادم بالإنترنت ، ويقومون بإعادة الاتصال. لذلك إذا كان المنفذ عامًا مرة واحدة ، ولا يزال هناك عملاء مفتوحون مع هذا المنفذ ، فسيكون لديك وضعي.
أنا شخص جميل أتمنى لك الليل والنهار
Nerfair أي عميل socket.io يستخدمه عملاء الجوال؟ socket.io-client
؟ أو تلك الأصلية (Android / iOS)؟
darrachequesne لست متأكدًا من أنني فهمت بشكل صحيح لكنها قياسية
<script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script>
var socket = io('http://localhost');
socket.on('message', function (data) {
console.log(data);
});
</script>
وعلى جانب الخادم هو كذلك
sio = require('socket.io')
التعليق الأكثر فائدة
أنا شخص جميل أتمنى لك الليل والنهار