سؤال

سؤال صعب طرحته علي ذات يوم..نحن نعمل على تطبيق هاتفي (SIP) معقد جدًا يحتوي على كود C++ وPHP مختلط مع قواعد بيانات MySQL والعديد من المكونات مفتوحة المصدر.

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

يبدو الأمر غير منطقي بالنسبة لي، حيث أن هناك مليون سيناريو قد يحدث (حسنًا، حرفيًا...)

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

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

المحلول

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

يمكنك حل المشكلة بنفسك - ما هو الحد الأدنى من "العمل" الذي يتعين عليك إنجازه لمعاملة أو أي وحدة مهمة لديك في تطبيقك؟

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

يحرر

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

إنني أتجاهل تحليل الحالة الأسوأ، لأن هذا - كما أشرت - أصعب قليلاً.

نصائح أخرى

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

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

حظ سعيد :)

إذا كان لديك حقا للإجابة على هذا يمكن القول بشيء من هذا القبيل:

و"أنا لا أعرف من على قمة رأسي، وأنا سوف لتقدير هذا بالنسبة لك ولكن الأمر سيستغرق وقتا. من الواضح أن دقة جوابي تعتمد على مقدار الجهد (IE الوقت) وضعت في حساب بلدي تقدير. كم من الوقت يجب أن أضع في حساب تقديري؟ "

ووضع عبء يعود عليها. إذا كانوا يريدون حقا إجابة دقيقة، انهم ذاهبون لدينا لتمكنك من بناء بعض ما لا يقل عن اختبار التطبيقات التي يمكن محاكاة البيئة الفعلية.

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

يتذكر: النماذج الأولية واسعة النطاق، والمسامير عميقة.

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

قضاء بعض الوقت في التفكير في الأمر.تحليل حالات الاستخدام الهامة.فكر في الذاكرة التي قد تحتاجها؛فكر في الوصول إلى قاعدة البيانات؛فكر في الوصول إلى الشبكة (المحلية والبعيدة).هذه سوف تؤثر على أداء النظام الخاص بك.اجمع الفريق بأكمله معًا للقيام بذلك.

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

نتيجة: عدد أقل من المفاجآت السيئة في اختبار النظام.ذعر أقل مع اقتراب موعد الإصدار.

يمكنك بالتأكيد إجراء تخطيط للسعة مسبقًا، ولكن جودة التقدير ستعتمد على جودة البيانات المتاحة.

أفضل تقدير هو بناء النظام قيد الاختبار، وتشغيل أحمال العمل المحاكية، ثم التنبؤ بالسعة كدالة لمتطلبات الأداء وعبء العمل.تشكل هذه الثلاثة مساحة للتنبؤ - بالنظر إلى 2 من 3، يمكنك التنبؤ بالثالث:

  1. نظرا لمتطلبات الأداء والقدرات (أي.الأجهزة) يمكنك حساب حجم العمل الذي يمكنك التعامل معه.

  2. نظرًا لمتطلبات الأداء وعبء العمل، يمكنك حساب السعة (أيالأجهزة) التي تحتاجها.

  3. نظرًا لحجم العمل والقدرة، يمكنك التنبؤ بالأداء المتوقع لديك.

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

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