سؤال

ولدي خدمة WCF نشرها في التطبيق وحدة مع BasicHTTPBinding وSSL تمكين. يتم تعيين السمة التالية أيضا:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

ولقد حددت أيضا سلوك اختناق ل

<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647"
        maxConcurrentInstances="2147483647" />

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

ولقد اطلعت على رمز الأداء تسجيل عداد أكثر من مرتين، ويبدو غرامة بالنسبة لي.

لذلك أريد أن أسأل أين هي المشكلة في هذه الحالة؟ أنا لم تحدد أي نوع من ContextMode أو ConcurrencyMode حتى الان.

وبعد هذا الموضوع لاحظت أنه كلما أبدأ Intance آخر اختبار موكلي خادم المتزامنة المكالمات زيادة العداد إلى 2 مثل إذا أنا تشغيل فقط 1 المثال الحد الأقصى بالتزامن تم تلقيها المكالمات سوف تكون 2 وإذا كان هناك اثنين المثال نفس القيمة يذهب إلى 4 وهلم جرا. هل هناك أي حد لعدد WCF يدعو من مرة واحدة العملية؟

و******** أضيفت في 17 مارس ********

واليوم جريت اختبار آخر مع العميل اختبار واحد (مع 50 المستخدمين المتزامنين) على نفس الجهاز الذي يتم تشغيل الملقم. هذه المرة أنا على الحصول على النتيجة بالضبط ما أردت أن تظهر (أي الحد الأقصى المكالمات المتزامنة التي تم تلقيها من قبل خادم = 50).

ولكن أحتاج إلى القيام به هو نفسه على أجهزة الآخرين كذلك. أي شخص يمكن أن يساعدني على ذلك؟

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

المحلول 2

ولقد وجدت الحل: هناك حد الاتصال على ServicePointManager الذي كان يسبب هذه المشكلة. لإزالة هذا الحد تحتاج فقط إلى مجموعة

System.Net.ServicePointManager.DefaultConnectionLimit = X;

وحيث الحد الافتراضي هو 2.

نصائح أخرى

وأو استخدام هذا التكوين في العميل.

<system.net>
    <connectionManagement>
      <add maxconnection = "200" address ="*" />
    </connectionManagement>
  </system.net>

وهنا 200 هو الحد من العميل

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