كيفية تحديد المؤثّر السلبي في الخادم وإصلاحه بسرعة وتحسين أداء الخادم ومنع أي تراجع فيه
نظرة عامة
يوضّح لك هذا الدليل كيفية حلّ مشكلة تحميل زائد على الخادم في 4 خطوات:
- التقييم: حدِّد المؤثّر السلبي في الخادم.
- التثبيت: يمكنك تنفيذ إصلاحات سريعة للحدّ من التأثير.
- التحسين: تعزيز إمكانات الخادم وتحسينها
- المراقبة: استخدِم الأدوات المبرمَجة للمساعدة في منع حدوث مشاكل في المستقبل.
تقييم
عندما تزيد حركة البيانات عن الحدّ الأقصى للخادم، قد يصبح واحد أو أكثر من العناصر التالية عائقًا: وحدة المعالجة المركزية أو الشبكة أو الذاكرة أو عمليات الإدخال/الإخراج على القرص. ويتيح تحديد أي من هذه العوامل هو العقبة تركيز الجهود على إجراءات التخفيف الأكثر تأثيرًا.
- وحدة المعالجة المركزية (CPU): يجب التحقيق في استخدام وحدة المعالجة المركزية الذي يتجاوز %80 باستمرار وإصلاحه. غالبًا ما ينخفض أداء الخادم عندما يصل استخدام وحدة المعالجة المركزية إلى %80-%90 تقريبًا، ويصبح ذلك أكثر وضوحًا عندما يقترب الاستخدام من %100. إنّ استخدام وحدة المعالجة المركزية (CPU) لعرض طلب واحد لا يُذكر، ولكنّ تنفيذ ذلك على نطاق واسع أثناء الارتفاعات المفاجئة في عدد الزيارات قد يؤدي أحيانًا إلى إرباك الخادم. سيؤدي تفريغ العرض إلى بنية أساسية أخرى وتقليل العمليات المكلفة والحد من عدد الطلبات إلى تقليل استخدام وحدة المعالجة المركزية.
- الشبكة: خلال فترات ارتفاع عدد الزيارات، يمكن أن تتجاوز معدلات نقل البيانات في الشبكة المطلوبة لتلبية طلبات المستخدمين السعة المتاحة. قد تصل بعض المواقع الإلكترونية أيضًا إلى الحد الأقصى المسموح به لنقل البيانات التراكمية، وذلك حسب المستضيف. سيؤدي تقليل حجم وكمية البيانات المنقولة من الخادم وإليه إلى إزالة هذا العائق.
- الذاكرة: عندما لا يتوفّر في النظام ذاكرة كافية، يجب نقل البيانات إلى القرص لتخزينها. يستغرق الوصول إلى القرص وقتًا أطول بكثير من الوصول إلى الذاكرة، وقد يؤدي ذلك إلى إبطاء التطبيق بأكمله. وإذا نفدت الذاكرة بالكامل، قد يؤدي ذلك إلى حدوث أخطاء نفاد الذاكرة (OOM). يمكن إزالة هذا العائق من خلال تعديل تخصيص الذاكرة وإصلاح تسرّب الذاكرة وترقية الذاكرة.
- عمليات الإدخال/الإخراج على القرص: يفرض القرص نفسه قيودًا على معدّل قراءة البيانات أو كتابتها من القرص. إذا كانت وحدات الإدخال والإخراج على القرص تمثّل عقبة، يمكن أن تؤدي زيادة كمية البيانات المخزّنة مؤقتًا في الذاكرة إلى تخفيف هذه المشكلة (على حساب زيادة استخدام الذاكرة). إذا لم ينجح ذلك، قد يكون من الضروري ترقية الأقراص.
تركّز الأساليب الواردة في هذا الدليل على معالجة مشاكل وحدة المعالجة المركزية (CPU) والشبكة. بالنسبة إلى معظم المواقع الإلكترونية، ستكون وحدة المعالجة المركزية والشبكة هما أهم العوامل التي تؤدي إلى حدوث مشاكل في الأداء أثناء ارتفاع عدد الزيارات.
يُعدّ تشغيل top على الخادم المتأثر نقطة بداية جيدة للتحقيق في حالات البطء. ويمكنك أيضًا الاستعانة بالبيانات السابقة من مقدّم خدمة الاستضافة أو أداة المراقبة، إذا كانت متاحة.
توازن
يمكن أن يؤدي الخادم الذي تم تحميله بشكل زائد بسرعة إلى أعطال متتالية في مكان آخر في النظام. لذلك، من المهم تثبيت الخادم قبل محاولة إجراء تغييرات أكثر أهمية.
تقييد معدّل الزيارات على الويب
يحمي الحدّ من المعدّل البنية الأساسية من خلال الحدّ من عدد الطلبات الواردة. ويزداد هذا الأمر أهمية مع تراجع أداء الخادم: فمع زيادة أوقات الاستجابة، يميل المستخدمون إلى إعادة تحميل الصفحة بشكل متكرر، ما يزيد من الحمل على الخادم بشكل أكبر.
تعديل الإجابات
على الرغم من أنّ رفض الطلب غير مكلف نسبيًا، فإنّ أفضل طريقة لحماية الخادم هي التعامل مع الحدّ من معدّل الطلبات في مكان ما في المصدر، على سبيل المثال، من خلال جهاز موازنة الحمل أو الخادم الوكيل العكسي أو شبكة توصيل المحتوى (CDN).
التعليمات:
قراءات إضافية:
التخزين المؤقت عبر HTTP
ابحث عن طرق لتخزين المحتوى مؤقتًا بشكل أكثر قوة. إذا كان من الممكن عرض مورد من ذاكرة تخزين مؤقت لبروتوكول HTTP (سواء كانت ذاكرة التخزين المؤقت للمتصفّح أو شبكة توصيل المحتوى)، لن يكون من الضروري طلب المورد من الخادم الأصلي، ما يقلل من الحِمل على الخادم.
تشير عناوين HTTP، مثل Cache-Control وExpires وETag، إلى كيفية تخزين مورد معيّن مؤقتًا في ذاكرة التخزين المؤقت على الويب. سيؤدي تدقيق هذه العناوين وإصلاحها إلى تحسين التخزين المؤقت.
على الرغم من أنّه يمكن أيضًا استخدام مشغّلي الخدمات للتخزين المؤقت، فإنّهم يستخدمون ذاكرة تخزين مؤقت منفصلة، ويُعدّون مكمّلاً للتخزين المؤقت المناسب لبروتوكول HTTP، وليس بديلاً عنه. لهذا السبب، عند التعامل مع خادم مثقل، يجب تركيز الجهود على تحسين التخزين المؤقت لبروتوكول HTTP.
تشخيص
شغِّل Lighthouse واطّلِع على تدقيق عرض مواد العرض الثابتة باستخدام سياسة تخزين مؤقت فعّالة لعرض قائمة بالموارد التي تتضمّن مدة بقاء (TTL) قصيرة إلى متوسطة. بالنسبة إلى كل مورد مدرَج، يجب تحديد ما إذا كان يجب زيادة مدة TTL. كإرشادات عامة:
- يجب تخزين الموارد الثابتة مؤقتًا مع مدة صلاحية طويلة (سنة واحدة).
- يجب تخزين الموارد الديناميكية مؤقتًا مع مدة بقاء قصيرة (3 ساعات).
تعديل الإجابات
اضبط توجيه max-age في عنوان Cache-Control على عدد الثواني المناسب.
التعليمات:
التكيّف مع الإصدارات الأقدم
التكيّف مع الإصدارات الأقدم هو استراتيجية لتقليل الوظائف مؤقتًا من أجل التخلص من الحمل الزائد من النظام. يمكن تطبيق هذا المفهوم بعدة طرق مختلفة: على سبيل المثال، عرض صفحة نصية ثابتة بدلاً من تطبيق كامل الميزات، أو إيقاف البحث أو عرض نتائج بحث أقل، أو إيقاف ميزات معينة باهظة الثمن أو غير أساسية. يجب التركيز على إزالة الوظائف التي يمكن إزالتها بأمان وسهولة وبأقل تأثير على النشاط التجاري.
تحسين
استخدام شبكة توصيل المحتوى (CDN)
يمكن تفريغ عرض مواد العرض الثابتة من الخادم إلى شبكة توصيل المحتوى (CDN)، ما يقلل من الحِمل.
تتمثّل الوظيفة الأساسية لشبكة توصيل المحتوى في عرض المحتوى للمستخدمين بسرعة من خلال توفير شبكة كبيرة من الخوادم القريبة من المستخدمين. ومع ذلك، تقدّم معظم شبكات توصيل المحتوى أيضًا ميزات إضافية مرتبطة بالأداء، مثل الضغط وموازنة الحمل وتحسين الوسائط.
إعداد شبكة توصيل محتوى (CDN)
تستفيد شبكات توصيل المحتوى من النطاق الواسع، لذا نادرًا ما يكون من المنطقي تشغيل شبكة توصيل المحتوى الخاصة بك. يمكن إعداد شبكة توصيل المحتوى الأساسية بسرعة (خلال 30 دقيقة تقريبًا)، وذلك من خلال تعديل سجلّات نظام أسماء النطاقات لتوجيهها إلى شبكة توصيل المحتوى.
تحسين استخدام شبكة توصيل المحتوى (CDN)
تشخيص
حدِّد الموارد التي لا يتم عرضها من شبكة توصيل المحتوى (ولكن يجب أن تكون كذلك) من خلال تشغيل WebPageTest. في صفحة النتائج، انقر على المربّع فوق "الاستخدام الفعّال لشبكة توصيل المحتوى" (Effective use of CDN) للاطّلاع على قائمة المراجع التي يجب عرضها من شبكة توصيل محتوى.
تعديل الإجابات
إذا لم يتم تخزين مورد مؤقتًا بواسطة شبكة توصيل المحتوى، تأكَّد من استيفاء الشروط التالية:
- يحتوي على رأس
Cache-Control: public. - يحتوي على عنوان
Cache-Control: s-maxageأوCache-Control: max-ageأوExpires. - يحتوي على
Content-LengthأوContent-RangeأوTransfer-Encoding header.
توسيع نطاق موارد الحوسبة
يجب اتخاذ قرار توسيع نطاق موارد الحوسبة بعناية. على الرغم من أنّه من الضروري في كثير من الأحيان توسيع نطاق موارد الحوسبة، فإنّ إجراء ذلك قبل الأوان يمكن أن يؤدي إلى تعقيد غير ضروري في البنية وتكاليف مالية.
تشخيص
قد يشير ارتفاع مدة تحميل أول بايت (TTFB) إلى أنّ الخادم يقترب من بلوغ سعته القصوى. يمكنك العثور على هذه المعلومات في تدقيق Lighthouse تقليل أوقات استجابة الخادم (TTFB).
لمزيد من التحقيق، استخدِم أداة مراقبة لتقييم استخدام وحدة المعالجة المركزية. إذا تجاوز استخدام وحدة المعالجة المركزية الحالي أو المتوقّع %80، ننصحك بزيادة عدد الخوادم.
تعديل الإجابات
تتيح إضافة جهاز موازنة الحمل توزيع عدد الزيارات على خوادم متعددة. يقع جهاز موازنة الحمل أمام مجموعة من الخوادم ويوجه حركة المرور إلى الخادم المناسب. يوفّر مقدّمو خدمات السحابة الإلكترونية أجهزة موازنة الحمل الخاصة بهم (GCP أو AWS أو Azure) أو يمكنك إعداد أجهزتك الخاصة باستخدام HAProxy أو NGINX. بعد تفعيل جهاز موازنة الحمل، يمكن إضافة خوادم أخرى.
بالإضافة إلى موازنة الحمل، يوفّر معظم مقدّمي خدمات السحابة الإلكترونية ميزة "القياس التلقائي" (GCP وAWS وAzure). تعمل ميزة "التوسّع التلقائي" مع ميزة "موازنة الحمل"، حيث تعمل ميزة "التوسّع التلقائي" على زيادة موارد الحوسبة وتقليلها تلقائيًا حسب الطلب في وقت معيّن. ومع ذلك، فإنّ ميزة "التوسّع التلقائي" ليست سحرية، إذ يستغرق اتصال المثيلات الجديدة بالإنترنت بعض الوقت وتتطلّب إعدادات كبيرة. بسبب التعقيد الإضافي الذي ينطوي عليه القياس التلقائي، يجب أولاً مراعاة إعداد أبسط يستند إلى جهاز موازنة الحمل.
تمكين الضغط
يجب ضغط الموارد المستنِدة إلى النص باستخدام gzip أو brotli. يمكن أن يقلّل Gzip حجم نقل هذه الموارد بنسبة %70 تقريبًا.
تشخيص
استخدِم تدقيق Lighthouse تفعيل ضغط النص لتحديد الموارد التي يجب ضغطها.
تعديل الإجابات
فعِّل ميزة الضغط من خلال تعديل إعدادات الخادم. التعليمات:
تحسين الصور والوسائط
تشكّل الصور الجزء الأكبر من حجم ملفات معظم المواقع الإلكترونية، ويمكن أن يؤدي تحسين الصور إلى تقليل حجم الموقع الإلكتروني بسرعة وبشكل كبير.
تشخيص
تتضمّن أداة Lighthouse مجموعة متنوعة من عمليات التدقيق التي تشير إلى تحسينات محتملة للصور. بدلاً من ذلك، تتمثل إحدى الاستراتيجيات الأخرى في استخدام "أدوات مطوري البرامج" لتحديد أكبر ملفات الصور، ومن المرجّح أن تكون هذه الصور مرشحة جيدة للتحسين.
عمليات التدقيق ذات الصلة في أداة Lighthouse:
- اختيار حجم مناسب للصور
- تأجيل تحميل الصور خارج الشاشة
- ترميز الصور بكفاءة
- عرض الصور بتنسيقات الجيل التالي
- استخدام تنسيقات الفيديو للمحتوى المتحرّك
سير العمل في "أدوات مطوّري البرامج في Chrome":
- تسجيل أنشطة الشبكة
- انقر على Img لاستبعاد الموارد غير المصوّرة.
- انقر على عمود الحجم لترتيب ملفات الصور حسب الحجم
تعديل الإجابات
إذا كان وقتك محدودًا…
ركِّز وقتك على تحديد الصور الكبيرة والتي يتم تحميلها بشكل متكرر وتحسينها يدويًا باستخدام أداة مثل Squoosh. غالبًا ما تكون الصور الرئيسية مناسبة للتحسين.
نقاط يجب مراعاتها:
- الحجم: يجب ألا تكون الصور أكبر من اللازم.
- الضغط: بشكل عام، سيؤدي مستوى الجودة الذي يتراوح بين 80 و85 إلى تأثير ضئيل في جودة الصورة مع تقليل حجم الملف بنسبة %30 إلى %40.
- التنسيق: استخدِم تنسيق JPEG للصور بدلاً من PNG، واستخدِم تنسيق MP4 للمحتوى المتحرّك بدلاً من GIF.
إذا كان لديك المزيد من الوقت…
ننصحك بإعداد شبكة توصيل محتوى (CDN) للصور إذا كانت الصور تشكّل جزءًا كبيرًا من موقعك الإلكتروني. تم تصميم شبكات توصيل المحتوى للصور من أجل عرض الصور وتحسينها، وستتولى هذه الشبكات عرض الصور بدلاً من خادم المصدر. إنّ إعداد شبكة توصيل محتوى (CDN) للصور هو أمر بسيط، ولكن يتطلّب تعديل عناوين URL الحالية للصور لتشير إلى شبكة توصيل المحتوى (CDN) للصور.
قراءات إضافية:
تصغير ملفات JS وCSS
تؤدي عملية التصغير إلى إزالة الأحرف غير الضرورية من JavaScript وCSS.
تشخيص
استخدِم عمليتَي التدقيق تصغير ملفات CSS وتصغير ملفات JavaScript في Lighthouse لتحديد الموارد التي تحتاج إلى تصغير.
تعديل الإجابات
إذا كان لديك وقت محدود، ركِّز على تصغير ملفات JavaScript. تحتوي معظم المواقع الإلكترونية على JavaScript أكثر من CSS، لذا سيكون هذا الإجراء أكثر تأثيرًا.
مراقب
توفّر أدوات مراقبة الخوادم إمكانية جمع البيانات ولوحات البيانات والتنبيهات بشأن أداء الخادم. ويمكن أن يساعد استخدامها في منع مشاكل في أداء الخادم المستقبلية والحدّ منها.
يجب أن يكون إعداد المراقبة بسيطًا قدر الإمكان. إنّ جمع البيانات والتنبيهات بشكل مفرط له تكاليفه: فكلما زاد نطاق جمع البيانات أو تكراره، زادت تكلفة جمعها وتخزينها، كما أنّ التنبيهات المفرطة تؤدي حتمًا إلى تجاهل الصفحات.
يجب أن تستخدم التنبيهات مقاييس ترصد المشاكل بشكل متّسق ودقيق. ويُعدّ وقت استجابة الخادم (وقت الاستجابة) مقياسًا مناسبًا بشكل خاص لهذا الغرض، إذ يرصد مجموعة كبيرة من المشاكل ويرتبط مباشرةً بتجربة المستخدم. يمكن أن يكون التنبيه استنادًا إلى مقاييس المستوى الأدنى مثل استخدام وحدة المعالجة المركزية (CPU) مكملاً مفيدًا ولكنه سيلتقط مجموعة فرعية أصغر من المشكلات. بالإضافة إلى ذلك، يجب أن يستند التنبيه إلى الأداء الذي تمت ملاحظته في الذيل (بعبارة أخرى، الشريحة المئوية الخامسة والتسعون أو التاسعة والتسعون)، بدلاً من المتوسطات. وإلا، يمكن أن تحجب المتوسطات بسهولة المشاكل التي لا تؤثر على جميع المستخدمين.
تعديل الإجابات
يوفّر جميع مقدّمي خدمات السحابة الإلكترونية الرئيسيين أدوات المراقبة الخاصة بهم (GCP وAWS وAzure). بالإضافة إلى ذلك، يُعدّ Netdata بديلاً ممتازًا ومجانيًا ومفتوح المصدر. بغض النظر عن الأداة التي تختارها، ستحتاج إلى تثبيت وكيل المراقبة الخاص بالأداة على كل خادم تريد مراقبته. بعد الانتهاء، تأكَّد من إعداد التنبيهات.
التعليمات: