أفضل الممارسات لتحمل انفجار حركة المرور في يوم الإطلاق

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

سؤال

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

تفاصيل:هذا ال L/A/M/PHP المكدس باستخدام إطار عمل MVC المطور داخليًا.يتم إطلاق هذا حاليًا على خادم واحد، مع كل من Apache وMySQL، ولكن يمكننا تقسيم ذلك إذا لزم الأمر.لقد قمنا بالفعل بتثبيت memcached ونجري أكبر قدر ممكن من التخزين المؤقت على مستوى PHP.بعض الصفحات كثيفة الاستعلام إلى حد ما، ونحن نستخدم Smarty كمحرك القالب الخاص بنا.ضع في اعتبارك أنه لا يوجد وقت لتغيير أي من هذه الجوانب الرئيسية - فهذا هو الإعداد فقط.ما هي أنواع الأشياء التي يجب أن ننتبه إليها؟

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

المحلول

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

من السهل الإعداد والبدء وسيمنحك مقاييس مبكرة لمعرفة ما إذا كنت ستتعامل مع حمل الذروة المتوقع.

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

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

حظا سعيدا في الإطلاق

نصائح أخرى

قم بالقياس أولاً، ثم قم بالتحسين.هل قمت بأي اختبار التحميل؟أين هي الاختناقات؟

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

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

أود على الأقل استبعاد كل المحتوى الثابت.قم بإعداد vhost آخر في مكان آخر وقم بتحميل كافة الرسومات/css/js عليه.يمكنك شراء بعض الدورات الإضافية لتفريغ عرض هذا النوع من المحتوى.إذا كنت مهتمًا حقًا، فيمكنك الاشتراك واستخدام خدمة توزيع المحتوى.يوجد الآن الكثير مشابه لـ Akamai ورخيص جدًا.

قد تكون هناك فكرة أخرى تتمثل في استخدام Apache mod_proxy للاحتفاظ بمخرجات الصفحة التي تم إنشاؤها لفترة زمنية محددة.سيكون APC أيضًا قابلاً للاستخدام تمامًا ..يمكنك استخدام التقاط التخزين المؤقت للمخرجات + آخر وقت تم تعديله للبيانات ذات الصلة على الصفحة، واستخدام الإصدار المخبأ لـ APC.إذا لم تعد الصفحة صالحة بعد الآن، فيمكنك إعادة إنشائها وتخزينها في APC مرة أخرى.

حظا سعيدا، سوف تكون تجربة تعليمية!

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

يمكنك إما التحكم في عدد المستخدمين بشكل صريح في إصدار تجريبي خاص، أو إصدار تجريبي شبه عام على غرار Google حيث يكون لكل مستخدم عدد من الإحالات التي يمكنه تقديمها لأصدقائه.

أنا شخصياً سأفعل بعض الأشياء

1) ضع نوعًا من نظام النسخ المتماثل لموازن التحميل/قاعدة البيانات

هذا يعني أنه يمكنك نشر خدمتك عبر خوادم متعددة.لا تستطيع أن تمتلك أكثر من خادم بشكل دائم؟استخدم Amazon E3 - إنه مفيد لوضع أشياء مثل هذه (قم بتشغيل عدد قليل من الخوادم الإضافية للتعامل مع التحميل)

2) كود في بعض قيود "التحميل العالي".

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

3) اختبار التحميل...استخدم شيئًا مثل أباتشيبينش للتأكيد على اختبار الخوادم الخاصة بك.

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

قام Linux Format بعمل مقالة جيدة حول "كيفية النجاة من الضربات المائلة" ...والتي وجدتها مفيدة في الماضي.إنه متاح على الإنترنت بصيغة PDF

الخطوات الأولى الأساسية لتقوية موقعك لاستقبال عدد كبير من الزيارات.

1) استخدم أداة منخفضة التكلفة مثل https://browsermob.com/ لتحميل اختبار موقعك.كحد أدنى، يجب أن تشاهد 100 ألف زائر فريد في الساعة.إذا حصلت على إعلان من صفحة MSN الرئيسية، فتأكد من قدرتك على التعامل مع 500 ألف إعلان فريد في الساعة.

2) انقل كل محتوى الرسوم/الفيديو الثابت إلى CDN.يعد Edgecast وAmazon خيارين ممتازين.

3) استخدم Jet Profiler لتكوين ملف تعريف MySQL Server الخاص بك لتحليل أي استعلامات بطيئة الأداء.التغييرات الطفيفة يمكن أن يكون لها فوائد كبيرة.

النظر في استخدام ورنيش- إنه خادم وكيل عكسي للتخزين المؤقت (مثل Squid، ولكن لغرض واحد أكثر بكثير).لقد قمت بتشغيل بعض المواقع الكبيرة جدًا خلفه، ويبدو أنه يعمل بشكل جيد حقًا.

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