حلّ مشكلة التحميل الزائد على الخادم

كيفية تحديد المؤثّر السلبي في الخادم وإصلاحه بسرعة وتحسين أداء الخادم ومنع أي تراجع فيه

Katie Hempenius
Katie Hempenius

نظرة عامة

يوضّح لك هذا الدليل كيفية حلّ مشكلة "التحميل الزائد على الخادم" في 4 خطوات:

  1. التقييم: حدِّد المؤثّر السلبي في الخادم.
  2. التحسين: يمكنك تنفيذ حلول سريعة للحدّ من التأثير.
  3. التحسين: يمكنك زيادة إمكانات الخادم وتحسينها.
  4. المراقبة: استخدِم الأدوات المبرمَجة للمساعدة في منع حدوث مشاكل في المستقبل.

تقييم

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

  • وحدة المعالجة المركزية: يجب التحقيق في استخدام وحدة المعالجة المركزية الذي يتجاوز باستمرار% 80 وإصلاحه. غالبًا ما ينخفض أداء الخادم عندما يصل استخدام وحدة المعالجة المركزية إلى %80-90 تقريبًا، ويزداد هذا الانخفاض عندما يقترب الاستخدام من %100. إنّ استخدام وحدة المعالجة المركزية لعرض طلب واحد يُعدّ ضئيلًا، ولكنّ إجراء ذلك على النطاق الذي يحدث أثناء الارتفاعات المفاجئة في عدد الزيارات يمكن أن يُثقل أحيانًا الخادم. سيؤدي نقل عرض الإعلانات إلى بنية أساسية أخرى، والحد من العمليات المُكلّفة، وحصر عدد الطلبات إلى تقليل استخدام وحدة المعالجة المركزية.
  • الشبكة: خلال فترات الذروة، يمكن أن تتجاوز معدل نقل البيانات في الشبكة المطلوب لتلبية طلبات المستخدمين السعة. قد تبلغ بعض المواقع الإلكترونية أيضًا حدودًا قصوى في ما يتعلق بنقل البيانات التراكمية، وذلك استنادًا إلى مقدّم الاستضافة. سيؤدي تقليل حجم البيانات التي يتم نقلها من الخادم وإليه وكميتها إلى إزالة هذه المشكلة.
  • الذاكرة: عندما لا يتوفّر للنظام ذاكرة كافية، يجب نقل البيانات إلى القرص لتخزينها. يكون الوصول إلى القرص أبطأ بكثير من الوصول إلى الذاكرة، ويمكن أن يؤدي ذلك إلى إبطاء تطبيق بأكمله. إذا نفدت الذاكرة تمامًا، يمكن أن يؤدي ذلك إلى حدوث أخطاء نفاد الذاكرة (OOM). يمكن إزالة هذه المشكلة من خلال تعديل مساحة الذاكرة المخصّصة وإصلاح أي تسرّبات في الذاكرة وترقية الذاكرة.
  • الإدخال/الإخراج من القرص: يعتمد معدل قراءة البيانات أو كتابتها من القرص على القرص نفسه. إذا كانت عمليات الإدخال/الإخراج من القرص هي نقطة عرقلة، يمكن أن تؤدي زيادة مقدار البيانات المخزّنة مؤقتًا في الذاكرة إلى تخفيف هذه المشكلة (على حساب زيادة استخدام الذاكرة). إذا لم ينجح ذلك، قد يكون من الضروري ترقية الأقراص.

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

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

توازن

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

تقييد معدّل الاستهلاك

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

إصلاح

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

التعليمات:

مراجع إضافية:

التخزين المؤقت عبر HTTP

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

تشير عناوين HTTP، مثل Cache-Control وExpires وETag، إلى كيفية تخزين مورد معيّن مؤقتًا في ذاكرة تخزين مؤقت على HTTP. سيؤدي تدقيق هذه الرؤوس وإصلاحها إلى تحسين ميزة التخزين المؤقت.

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

التشخيص

شغِّل Lighthouse واطّلِع على عملية التدقيق عرض مواد العرض الثابتة باستخدام سياسة ذاكرة تخزين مؤقت فعّالة للاطّلاع على قائمة بالموارد التي تتراوح مدة بقائها بين قصيرة ومتوسطة. بالنسبة إلى كلّ مورد مُدرَج، ننصحك بالتفكير في ما إذا كان يجب زيادة مدة البقاء (TTL). في ما يلي إرشادات تقريبية:

  • يجب تخزين الموارد الثابتة مؤقتًا باستخدام مدة بقاء طويلة (عام واحد).
  • يجب تخزين الموارد الديناميكية مؤقتًا باستخدام مدة بقاء قصيرة (3 ساعات).

إصلاح

اضبط توجيه max-age لعنوان Cache-Control على العدد المناسب من الثواني.

التعليمات:

التقليص السلس

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

تحسين

استخدام شبكة توصيل محتوى (CDN)

يمكن نقل عرض مواد العرض الثابتة من خادمك إلى شبكة توصيل المحتوى (CDN)، ما يقلل من الحمل.

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

إعداد شبكة توصيل المحتوى (CDN)

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

تحسين استخدام شبكة توصيل المحتوى (CDN)

التشخيص

يمكنك تحديد الموارد التي لا يتم عرضها من شبكة توصيل المحتوى (CDN) (ولكن من المفترض أن يتم عرضها) من خلال تشغيل WebPageTest. في صفحة النتائج، انقر على المربّع فوق "الاستخدام الفعّال لشبكة توصيل المحتوى (CDN)" للاطّلاع على قائمة الموارد التي يجب عرضها من شبكة توصيل المحتوى (CDN).

سهم يشير إلى زر "الاستخدام الفعّال لشبكة توصيل المحتوى"
نتائج WebPageTest

إصلاح

إذا لم تكن شبكة CDN تُخزِّن محتوى أحد الموارد، تأكَّد من استيفاء الشروط التالية:

زيادة موارد الحوسبة

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

التشخيص

يمكن أن يكون ارتفاع وقت وصول أول بايت (TTFB) علامة على أنّ الخادم يقترب من طاقته القصوى. يمكنك العثور على هذه المعلومات في عملية تدقيق تقليل أوقات استجابة الخادم (TTFB) في Lighthouse.

لإجراء المزيد من التحقيق، استخدِم أداة مراقبة لتقييم استخدام وحدة المعالجة المركزية. إذا تجاوز استخدام وحدة المعالجة المركزية الحالي أو المتوقّع% 80، ننصحك بزيادة عدد الخوادم.

إصلاح

تتيح إضافة أداة موازنة التحميل توزيع الزيارات على خوادم متعددة. يعمل موازن الحمولة أمام مجموعة من الخوادم ويوجّه الزيارات إلى الخادم المناسب. يوفّر مقدّمو خدمات السحابة الإلكترونية أجهزة موازنة الحمولة الخاصة بهم (Google Cloud Platform أو AWS أو Azure)، أو يمكنك إعداد جهازك الخاص باستخدام HAProxy أو NGINX. بعد تثبيت أداة توزيع الأحمال، يمكن إضافة خوادم إضافية.

بالإضافة إلى موازنة التحميل، يوفّر معظم مقدّمي خدمات السحابة الإلكترونية ميزة "التكبير/التصغير التلقائي" (Google Cloud Platform وAWS وAzure). تعمل ميزة "التحجيم التلقائي" مع ميزة "موازنة التحميل"، حيث تعمل ميزة "التحجيم التلقائي" على زيادة موارد الحوسبة أو تقليلها تلقائيًا استنادًا إلى الطلب في وقت معيّن. ومع ذلك، لا تُعدّ ميزة "توسيع النطاق التلقائي" سحرية، إذ يستغرق ظهور المثيلات الجديدة على الإنترنت بعض الوقت وتتطلّب عملية إعداد مُهمّة. بسبب التعقيد الإضافي الذي يتضمنه التكبير/التصغير التلقائي، يجب أولاً التفكير في إعداد أبسط يستند إلى أداة توزيع الأحمال.

تمكين الضغط

يجب ضغط الموارد المستنِدة إلى النص باستخدام gzip أو brotli. يمكن أن تقلِّل أداة Gzip حجم نقل هذه الموارد بنسبة %70 تقريبًا.

التشخيص

استخدِم عملية تدقيق تفعيل ضغط النص في Lighthouse لتحديد الموارد التي يجب ضغطها.

إصلاح

فعِّل ميزة الضغط من خلال تعديل إعدادات الخادم. التعليمات:

تحسين الصور والوسائط

تشكّل الصور معظم حجم الملفات في معظم المواقع الإلكترونية، ويمكن أن يؤدي تحسين الصور إلى تقليل حجم الموقع الإلكتروني بسرعة وبشكل كبير.

التشخيص

يحتوي Lighthouse على مجموعة متنوعة من عمليات التدقيق التي تُبلغ عن التحسينات المحتملة للصور. بدلاً من ذلك، يمكنك استخدام DevTools لتحديد أكبر ملفات الصور، ومن المرجّح أن تكون هذه الصور مرشّحة جيدة للتحسين.

عمليات تدقيق Lighthouse ذات الصلة:

سير العمل في "أدوات مطوّري البرامج في Chrome":

إصلاح

إذا كان لديك وقت محدود…

ركِّز وقتك على تحديد الصور الكبيرة التي يتم تحميلها بشكل متكرّر وتحسينها يدويًا باستخدام أداة مثل Squoosh. غالبًا ما تكون الصور الرئيسية مرشحة جيدة للتحسين.

نقاط يجب مراعاتها:

  • الحجم: يجب ألا تكون الصور أكبر من اللازم.
  • الضغط: بشكل عام، سيؤدّي مستوى الجودة من 80 إلى 85 إلى تأثير بسيط في جودة الصورة مع تحقيق انخفاض في حجم الملف بنسبة تتراوح بين %30 و%40.
  • التنسيق: استخدِم ملفات JPEG للصور بدلاً من PNG، واستخدِم MP4 للمحتوى المتحرك بدلاً من GIF.

إذا كان لديك المزيد من الوقت…

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

مراجع إضافية:

تصغير JavaScript وCSS

تزيل عملية التصغير الأحرف غير الضرورية من JavaScript وCSS.

التشخيص

استخدِم عمليات تدقيق تصغير ملفات CSS وتصغير ملفات JavaScript في Lighthouse لتحديد الموارد التي تحتاج إلى تصغير.

إصلاح

إذا كان لديك وقت محدود، ركِّز على تصغير JavaScript. تحتوي معظم المواقع الإلكترونية على مزيد من JavaScript مقارنةً بـ CSS، لذا سيكون هذا الإجراء أكثر تأثيرًا.

مراقب

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

يجب أن يكون إعداد عملية المراقبة بسيطًا قدر الإمكان. إنّ جمع البيانات والإشعارات المفرطَين يُسبّبان تكاليف: فكلما زاد نطاق جمع البيانات أو معدّل تكراره، زادت تكلفة جمعها وتخزينها، ويؤدي الإشعار المفرط إلى تجاهل الصفحات.

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

إصلاح

تقدّم جميع مقدّمي خدمات السحابة الإلكترونية الرئيسيين أدوات المراقبة الخاصة بهم (Google Cloud Platform وAWS وAzure). بالإضافة إلى ذلك، يُعدّ Netdata بديلاً ممتازًا ومفتوح المصدر ومجانيًا. بغض النظر عن الأداة التي تختارها، عليك تثبيت وكيل المراقبة الخاص بها على كل خادم تريد مراقبته. بعد الانتهاء، احرص على إعداد التنبيهات.

التعليمات: