سؤال

وأنا ريتينغ برنامج اختبار لخادم. في التطبيق اختبار، وأنا أحاول أن ربط عدد كبير من العملاء إلى الخادم، ولكن بعد فترة من الوقت على الحصول على كل نوع من أخطاء مثل هذه:

Connection reset by peer: socket write error                   

أو

java.net.SocketException: Connection reset                     

أو

java.net.ConnectException: Connection refused: connect

ويمكنني استخدام المقبس الجديد لكل عميل I الاتصال بالخادم.

هل يمكن لشخص ينير لي حول هذا السلوك الغريب؟

هل كانت مفيدة؟

المحلول

ولسوء الحظ لم تكن قد قدمت الكثير من التفاصيل الطبيعة لخادمك. أفترض أنك تكتب الخادم TCP نموذجي. في هذه الإجابة سوف <م> لا الحديث عن أي تفاصيل جافا محددة.

والنصيحة المختصرة هي: إدراج تأخير بين اتصالات العملاء. وبدون ذلك كنت محاكاة بنشاط هجوم حجب الخدمة على الخادم الخاص بك.

ليعد واحد، وقراءة أدناه.

وعادة ما يخلق الخادم TCP فقط 1 <م> الاستماع مضروب من خلال الدعوة (في واجهة جميلة C) وظيفة int sockfd = socket(...)، واجتياز نتيجة (sockfd في حالتنا) لbind() وظائف listen(). بعد هذه الاستعدادات، فإن الخادم يطلق على accept() التي سوف حاد الملقم في سبات (إذا تميزت المقبس كما حجب) وإذا كان العميل على الجانب الآخر من الأرض ستبدأ استدعاء دالة connect()، من accept() (على الخادم والجانب) بدعم من نواة نظام التشغيل خلق <م> المقبس متصل .

والعدد الفعلي للممكن <م> connectins انتظار يمكن أن يعرف من خلال النظر في وظيفة listen(). listen() لديها <م> المتراكمة المعلمة التي تحدد الحد الأقصى لعدد الصدد <م> OS نواة يجب الانتظار إلى نهاية (وهذا هو الأساس مبلغا من كافة الاتصالات في SYN_RCVD وESTABLISHED الدول). كانت تاريخيا القيمة الموصى بها ل <م> المتراكمة في 1980s شيء من هذا القبيل 5 والذي يعتبر بائسة الواضح في أيامنا هذه. في فري 7.2، على سبيل المثال، <م> حد القرص الثابت ل <م> المتراكمة قد خمنت بكتابة:

% sysctl kern.ipc.somaxconn
kern.ipc.somaxconn: 128

ووفي فيدورا 10:

% cat /proc/sys/net/core/somaxconn
128

وP.S.
عذرا لغتي الإنجليزية الرهيبة.

نصائح أخرى

ولديك خادم الويب / التطبيق يمكن خدمة سوى كمية محدودة من العملاء في وقت واحد.

وسوف تتلقى رفض اتصال / إعادة عندما يتم التوصل إلى هذا الحد.

وعلى أمل أن يجيب عن سؤالك.

وهتاف

وهناك OS وحدود خادم مدى سرعة وعدد اتصال يمكنك البدء / قبول. إذا كنت تريد أن تفعل اختبار الأداء على الخادم، في محاولة اباتشي JMeter كما فعلت حلول لهذه الحدود.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top