سؤال

لقد قمت بكتابة تطبيق خادم TCP والذي قمت من خلاله بإنشاء تطبيق يعمل كخدمة صدى TCP.

الآن أريد اختبار خادم الصدى هذا من حيث

  • كم عدد الاتصالات التي يمكنه التعامل معها
  • ما هو وقت الاستجابة
  • مقدار الذاكرة ووحدة المعالجة المركزية التي يستخدمها

من فضلك هل يمكنك اقتراح أي طريقة/أدوات قياسية لاختبار خادم الصدى هذا.أدرك أن تنفيذ كل من خادم TCP وخادم الصدى يعد ممارسة قياسية إلى حد ما، لذا آمل أن أجد أدوات راسخة لاختباره.

ملاحظة.:يمكنني كتابة تطبيق الاختبار الخاص بي ولكني لا أريد أن أفعل ذلك لأنه إذا رأيت بعض المشاكل، فأنا بحاجة إلى التأكد من أن الخادم الخاص بي هو الذي يفعل ذلك بشكل خاطئ.لا أريد أن ينتهي بي الأمر باختبار عميل الاختبار الخاص بي أولاً.

لقد كتبت هذا التنفيذ باستخدام C# و.NET 3.5 على الرغم من أنني أعتقد أنه لا يهم فيما يتعلق بالسؤال.

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

المحلول

لدي أداة مجانية قد تساعدك.أستخدمه لاختبار الخوادم التي تم إنشاؤها باستخدام إطار عمل خادم C++ الخاص بي.الأداة متاحة هنا: http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html.فهو يسمح لك بإنشاء عدد قابل للتكوين من الاتصالات بالخادم المستهدف بمعدل قابل للتكوين ثم إرسال البيانات على كل اتصال (مرة أخرى بمعدل قابل للتكوين).

إذا وجدت أن أفضل طريقة لاستخدامه هي تشغيله على جهاز مختلف عن الخادم (أعرف ذلك إلى حد ما، ولكن...) وربما تشغيل نسخ متعددة على عدة أجهزة مختلفة.لاحظ أنه إذا وجدت أنه لا يمكنك إجراء أكثر من حوالي 4000 اتصال، فمن المحتمل أنك تحتاج إلى تعديل بياناتك MAX_USER_PORT إعداد التسجيل على الجهاز الذي يقوم بتشغيل العميل.

بمجرد اختبار رمز TCP الخاص بك، قد تجد أنك بحاجة إلى اختبار البروتوكول الذي يدعمه الخادم الخاص بك.لقد كتبت أداة اختبار لهذا النوع من المواقف في C# وهي متاحة على CodeProject (http://www.codeproject.com/KB/IP/testingsocketservers.aspx).يتيح لك هذا كتابة "مكون إضافي" لدعم البروتوكول الخاص بك والتعامل مع العناصر المحايدة للبروتوكول (الكثير من الاتصالات، وتقسيم الرسائل بحيث تحصل على قراءات مجزأة، وما إلى ذلك) نيابةً عنك.التصميم عبارة عن تصميم سيء إلى حد ما لمؤشر الترابط لكل اتصال، وبالنسبة للأعداد الكبيرة من الاتصالات، سيكون من الأفضل إعادة تنفيذ شيء ما باستخدام تصميم غير متزامن ولكن لدي أدوات C++ الخاصة بي لذلك، لذا لم أتمكن مطلقًا من تغيير برنامج الاختبار هذا. .

نصائح أخرى

في نفس حالتك من قبل، استخدمت FunkLoad.إذا كان بإمكانك كتابة عميل صغير كمقتطف من كود Python، فسيقوم FunkLoad بتشغيل أكبر عدد تريده من هؤلاء على الخادم، ويرسم النتائج بيانيًا:

https://funkload.nuxeo.org/

المثال الذي تم تنفيذه بالكامل مقابل سلسلة من خوادم الاختبار هو محور الطبعة الثانية من كتابي أسس برمجة شبكة بايثون، في حالة أن مستودع كود المصدر العام الخاص به يقدم أي مساعدة:

https://github.com/brandon-rhodes/fopnp/tree/m/py2/chapter07

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