سؤال

حاليا نحن نستخدم 4 وحدة المعالجة المركزية ويندوز مربع مع 8gb من ذاكرة الوصول العشوائي مع MySQL 5.× مثبتا على نفس مربع.نحن نستخدم يبلوغيتش ملقم التطبيق على التطبيق لدينا.نحن نستهدف 200 المستخدمين المتزامنين لدينا التطبيق (من الواضح أنه ليس من نفس وحدة/الشاشة).فما هو العدد الأمثل من الاتصالات يجب علينا تكوين في اتصال حمام سباحة (min و max رقم) (نحن نستخدم يبلوغيتش باسم' تجمع الاتصال آلية) ?

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

المحلول

هناك طريقة بسيطة جدا الإجابة على هذا السؤال:

عدد الاتصالات في تجمع الاتصال يجب أن تكون متساوية في عدد من exec المواضيع تكوين في يبلوغيتش.

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

نصائح أخرى

هل حقا يعني 200 المتزامنة المستخدمين أو فقط 200 تسجيل في المستخدمين ؟ في معظم الحالات, متصفح المستخدم لن يكون قادرا على فعل أكثر من 1 صفحة طلب في الثانية.لذا 200 المستخدمين يترجم إلى 200 المعاملات في الثانية.وهذا هو عدد كبير جدا بالنسبة لمعظم التطبيقات.

بغض النظر ، على سبيل المثال ، دعنا نذهب مع 200 المعاملات في الثانية.أقول كل الأمامية (المتصفح) تكساس يأخذ 0.5 ثانية كاملة من 0.5 ثانية, 0.25 تنفق في قاعدة البيانات.لذا سوف تحتاج 0.5 * 200 أو 100 الاتصالات في يبلوغيتش thead حمام سباحة 0.25 * 200 = 50 اتصالات في DB تجمع الاتصال.

أن تكون آمنة ، أود أن تعيين ماكس تجمع مؤشرات الترابط الأحجام على الأقل 25 ٪ أكبر من تتوقع أن تسمح المسامير في الحمل.الحد الأدنى يمكن أن يكون جزء صغير من ماكس, ولكن المقايضة هو أنه يمكن أن يستغرق وقتا أطول لبعض المستخدمين بسبب اتصال جديد يجب أن يتم إنشاء.في هذه الحالة, 50 - 100 اتصالات غير أن العديد من DB بحيث من المحتمل أن يكون بداية جيدة عدد.

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

التحجيم تجمع الاتصال ليست تافهة شيء للقيام به.تحتاج في الأساس:

  • مقاييس للتحقيق في استخدام الاتصال
  • فشل آليات عندما لا يكون هناك اتصال المتاحة

FlexyPool يهدف إلى المعونة لكم كشف لنا الحق في الاتصال حجم حمام السباحة.

يمكنك التحقق من المواد التالية:

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

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

ويجب أن يكون تجمع اتصال قادرة على النمو وshink على أساس الاحتياجات الفعلية. تسجيل أرقام اللازمة للقيام التحليل على نظام التشغيل، إما من خلال بيانات تسجيل أو من خلال المراقبة JMX. النظر في إنشاء تنبيهات لسيناريوهات مثل "الذروة الكشف: أكثر من كان X إدخالات الجديدة التي سيتم تخصيصها في Y ثواني"، "كان اتصال من تجمع لأكثر من X ثواني" والتي سوف تسمح لك أن تولي اهتماما لمشاكل الأداء قبل أن يحصل المشاكل الحقيقية.

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

.

من الصعب الحصول على بيانات عن هذا.كما أنها تعتمد على عدد من العوامل كنت لا أذكر -

  • 200 المستخدمين المتزامنين ، ولكن كم من النشاط سيتم إنشاء استعلامات قاعدة البيانات?10 الاستفسارات في الصفحة الحمل ؟ 1 الاستعلام فقط على تسجيل الدخول ؟ الخ.الخ.

  • حجم الاستفسارات db الواضح.بعض الاستفسارات تشغيل في ميلي ثانية ، بعض في دقيقة.

يمكنك مراقبة الخلية لمشاهدة النشط الحالي استفسارات "عرض processlist".هذا يمكن أن تعطيك فكرة أفضل عن مدى نشاط يجري فعلا في db تحت الذروة.

وبناء على تجربتي على أنظمة مالية عالية الصفقة، إذا كنت ترغب في التعامل مثلا على 1K طلبات في ثواني و كنت قد 32 وحدة المعالجة المركزية، تحتاج إلى أن يكون استطلاعات 1000/32 فتح اتصال بقاعدة البيانات الخاصة بك.

وهنا هو صيغة بلدي:

<اقتباس فقرة>   

وRPS / CPU_COUNT

إذا معظم الحالات، سوف محرك قاعدة البيانات الخاصة بك أن تكون قادرة على التعامل مع طلباتك حتى في الأرقام أقل من ذلك بكثير، ولكن الاتصالات الخاصة بك وسوف يكون في انتظار وضع إذا كان الرقم منخفض.

وأنا أعتقد أنه من المهم جدا أن نذكر أن قاعدة البيانات الخاصة بك يجب أن تكون قادرة على التعامل مع تلك المعاملات (على أساس سرعة القرص، تكوين قاعدة بيانات وقوة الخادم).

وحظا سعيدا.

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