الحصول على اتصال جديد من تجمع الاتصال مرات في ASP.Net التطبيق.أريد اقتراحات للتخفيف

StackOverflow https://stackoverflow.com/questions/1210090

سؤال

نحن الحصول على الخطأ التالي في قاعدة بيانات معينة أحيانا معتدلة الحمل.

"النظام.InvalidOperationException:انتهت صلاحية المهلة.انقضت فترة المهلة قبل الحصول على اتصال من حوض السباحة.هذا قد حدث لأن جميع الاتصالات المجمعة في استخدام الحد الأقصى لحجم التجمع الذي تم التوصل إليه."


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

أنا أيضا أقترح التأكد من جميع سلاسل اتصال معين مثيل SQL Server متطابقة إلى تجنب خلق اتصال متعددة حمامات دون داع.وأنا على أمل أن نتمكن من استخدام استخدام [بيانات] بيان قبل الفعلية استعلامات SQL عندما نحتاج إلى تبديل قواعد البيانات في SQL Server واحد على سبيل المثال.

هل لديكم أي أفكار أو مؤشرات أو اقتراحات أو gotchas لنا احترس ؟

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

المحلول

يجب القضاء على اتصال التسريبات.إذا كان سبب بركة الإرهاق هو التسريبات ، زيادتها إلى 300 سوف تأخير ما لا مفر منه.إذا تسرب اتصال واحد في 10000 المكالمات (ie."نادرا جدا") و لديك 110 الطلبات المتزامنة في أقل من 5 ثواني مكالمة ، يمكنك تسرب بمعدل اتصال واحد كل 8 دقائق من شأنها استنزاف حوض السباحة في 13 ساعة.المهلات سوف تبدأ تظهر في وقت أبكر بكثير على الرغم المتاحة حجم حمام السباحة سوف يتقلص.

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

كما كنت قد النظر في استخدام أكثر مرونة اتصال مصنع واحد أن المحاولة ومحاولات غير المجمعة اتصال إذا كان المسبح ينضب.بالطبع هذا يسير جنبا إلى جنب مع بلدي قبل نقطة إذا كنت معايرة ماكس HTTP تقبل العد لتتناسب مع حجم حمام السباحة, حمام سباحة لا تستنفد (إلا إذا تسرب إلى مربع واحد).أنا لا أوصي هذا على الرغم من أنني أعتقد هو أفضل بكثير من الانتظار حتى يطلب في http.sys أراضي في التطبيق تخصيص الموارد في الإقليم (أي.خنق أقصى الحدود المقبولة HTTP المكالمات).

و أخيرا و ليس آخرا, تقليل مدة كل مكالمة.إذا يأخذ في المتوسط من 5 ثوان ، ثم أنت ترى 110 اتصال متزامن فقط مجرد 22 الطلبات في الثانية.إذا قمت بتقليل مدة المكالمة عن طريق القضاء على SQL الاختناقات في 1 ثانية, سوف تكون قادرة على خدمة 110 طلبات في الثانية لتصل إلى نفس الموارد كاب (110 الطلبات المتزامنة) ، 5 مرة زيادة حركة المرور.المذنب الأكبر هو عادة طاولة الفحص, تأكد من أن جميع الاستفسارات الخاصة بك تستخدم معقولة SQL و الأمثل مسار الوصول إلى البيانات.كما يقول داود: منشئ ملفات التعريف SQL هو صديقك.

يمكنك أيضا استخدام SqlConnection.ChangeDatabase تغيير قاعدة البيانات.

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