سؤال كيف تقوم باختبار التحميل وتخطيط السعة لمواقع الويب؟


هذا ال السؤال الكنسي حول تخطيط السعة لمواقع الويب.

ذات صلة:

ما هي بعض الأدوات والطرق الموصى بها لتخطيط السعة لمواقع الويب وتطبيقات الويب؟

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


111
2018-01-16 22:49


الأصل




الأجوبة:


الإجابة المختصرة هي: لا أحد يستطيع الإجابة عن هذا السؤال إلا أنت.

الجواب الطويل هو أن قياس عبء العمل الخاص بك هو شيء تحتاج إلى القيام به لنفسك ، لأنه يشبه قليلاً السؤال "كم هي قطعة من الخيط؟".

يمكن استضافة موقع ويب بسيط ثابت من صفحة واحدة على جهاز Pentium Pro 150 ولا يزال يقدم الآلاف من مرات الظهور كل يوم.

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

نظرة عامة مختصرة على هذا:

  • ضع السيناريو الخاص بك في المكان
  • إضافة المراقبة
  • إضافة حركة المرور
  • تقييم النتائج
  • علاج على أساس النتائج
  • شطف ، كرر حتى سعيد معقول

ضع السيناريو الخاص بك في المكان

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

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

لذا ، سأقوم بإعداد جهاز ظاهري ذو طاقة متوسطة (نواة ، 512 ميجابايت ، وأقراص HDD 4 جيجابايت) وتثبيت موازن التحميل المفضل ، haproxy في داخل ريد هات لينكس على VM.

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

إضافة المراقبة

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

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

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

بعض الأشياء التي تريد دائمًا مراقبتها:

  • استخدام المعالج
  • استخدام ذاكرة الوصول العشوائي
  • إستخدام القرص
  • وقت استجابة القرص
  • استخدام الشبكة

قد تختار أيضًا النظر في حالة توقف تام في SQL ، أو البحث عن الأوقات ، إلخ ، اعتمادًا على ما تقوم باختباره على وجه التحديد.

إضافة حركة المرور

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

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

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

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

تقييم النتائج

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

تصحيح

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

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

للتوسع ، احصل على المزيد من الخوادم.

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

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

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

لنفترض أننا سنتوسع. لذلك قررت استنساخ اثنين من خوادم الويب (وهما VMs) والآن لدي أربعة خوادم ويب.

شطف ، كرر

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

يمكنك بعد ذلك استخدام هذا الإجراء لاختبار أجزاء أخرى من النظام. بدلاً من ضرب موازن التحميل ، حاول ضرب خادم الويب مباشرةً ، أو خادم SQL باستخدام أداة قياس أداء SQL.


119
2018-04-29 14:05



هذا ممتاز لاختبار الحمولة ، لكنه يقول القليل عن تخطيط السعة. من يمكنه الكتابة عن بنية Google القابلة للتطوير ، والتي تم تصميمها في وقت مبكر ، أو البدائل باستخدام مربعات أقل تكلفة وأكثر تكلفة. - rleir


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

يتم إجراء قياس الأداء دائمًا زمن الوحدات ، كما

  • هم ما يهتم به المستخدمون
  • يمكن زيادتها إلى أعلى وأسفل

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


9
2018-04-21 22:32





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

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

لا ضغط ...

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

لحسن الحظ ، هناك مثل هذا الكتاب: "فن تخطيط السعة"


8





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

تكوين أباتشي مع Mod_Prefork

أباتشي يمكن القول إن أحد خادم الويب الأكثر شعبية (إن لم يكن) متوفر. إنها مفتوحة المصدر ولا تزال تحتفظ بنشاط. يمكنك تشغيله على أنظمة التشغيل Linux و Windows ، ولكنه أكثر شيوعًا في عالم Linux / Unix.

يجب أبدا استخدام اباتشي التكوين خارج المربع. تحتاج دائمًا إلى ضبط Apache على موقعك. الرئيسي تكوين اباتشي الملف على CentOS يقع في /etc/httpd/conf/httpd.confوملف التوصيف Apache الرئيسي على أنظمة Ubuntu يقع عادة في /etc/apache2/apache2.conf. يتم استخدام ملفات تهيئة إضافية لأشياء مثل المضيفين الظاهري.

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

معظم الوقت على تثبيتات Apache الافتراضية التي تأتي مع خوادم CentOS و Ubuntu ، MPM "mod_preforkلنفترض أنك تستخدم mod_prefork (إذا لم تكن متأكدًا ، فهذا هو الأرجح ، ولكنك وحدك قادر على تحديد ذلك) إليك أساسيات كيفية تهيئته:

  • اكتشف أقصى قدر ممكن من الذاكرة التي تريد أن يستخدمها Apache.
  • اختبر موقعك على الويب بشكل كبير ، وحدد مقدار الذاكرة التي تستخدمها كل عملية Apache (باستخدام أعلى).
  • خذ عملية Apache في الأعلى التي تستخدم أكبر قدر من الذاكرة ، وأضف القليل منها لقياس جيد ، ثم قسّم رقمك الأول (الحد الأقصى من الذاكرة التي تريد أن يستخدمها Apache) بهذا الرقم الجديد.
  • الرقم الذي تحصل عليه يجب أن يكون لديك MaxClients و ServerLimit المتغيرات.

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


5



استخدام الذاكرة يستند فقط إلى الأعلى معيبة قليلاً ، يرجى التحقق من f.e. stackoverflow.com/questions/7880784/... بالإضافة إلى ذلك ، قد ترغب في استخدام البرنامج النصي python "ps_mem.py" بدلاً من الأعلى لاستخدام الذاكرة ، أو حتى استخدام القيم directy المرفق بالعملية تحت / proc - Dennis Nolte
تستحق الإجابة بأكملها نظرًا للملاحظة التي أضفتها: "يجب ألا تستخدم مطلقًا تهيئة Apache". لا يمكننا أبدا التأكيد على هذا بما فيه الكفاية. - ezra-s


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


0