كيفية تحديد المؤثِّر السلبي في الخادم وإصلاحه بسرعة وتحسين أداء الخادم ومنع أي تراجع فيه.
نظرة عامة
يوضّح لك هذا الدليل كيفية حلّ مشكلة التحميل الزائد على خادم في 4 خطوات:
- التقييم: تحديد المؤثِّر السلبي في الخادم
- الاستقرار: نفِّذ الإصلاحات السريعة للحدّ من التأثير.
- التحسين: تعزيز إمكانات الخادم وتحسينها
- المراقبة: يمكنك استخدام الأدوات المبرمَجة للمساعدة في منع حدوث مشاكل في المستقبل.
تقييم
عندما تتسبب حركة البيانات في تحميل الخادم بشكل زائد، يمكن أن يصبح واحد أو أكثر مما يلي عقبة: إدخال/إخراج وحدة المعالجة المركزية (CPU) أو الشبكة أو الذاكرة أو إدخال/إخراج القرص. إن تحديد أي من هذه المعوقات يجعل من الممكن تركيز الجهود على التخفيف الأكثر تأثيرًا.
- وحدة المعالجة المركزية: يجب التحقق من استخدام وحدة المعالجة المركزية الذي يتجاوز نسبة 80% باستمرار وإصلاحه. وغالبًا ما ينخفض أداء الخادم عندما يصل استخدام وحدة المعالجة المركزية (CPU) إلى نسبة تتراوح بين %80 و%90 تقريبًا، ويصبح أكثر وضوحًا مع اقتراب نسبة الاستخدام إلى %100. إن استخدام وحدة المعالجة المركزية (CPU) لطلب واحد أمر ضئيل، ولكن هذا الإجراء على نطاق واسع أثناء ارتفاع عدد الزيارات قد يؤدي أحيانًا إلى إرباك الخادم. يمكن تقليل استخدام وحدة المعالجة المركزية (CPU) من خلال تفريغ الخدمة على البنية الأساسية الأخرى وتقليل العمليات المُكلفة والحد من كمية الطلبات.
- الشبكة: خلال فترات ارتفاع عدد الزيارات، يمكن أن تتجاوز سرعة معالجة بيانات الشبكة المطلوبة لتلبية طلبات المستخدمين السعة. وقد تبلغ أيضًا بعض المواقع الإلكترونية حدودًا قصوى في ما يتعلق بالنقل التراكمي للبيانات، وذلك استنادًا إلى المستضيف. سيؤدي تقليل حجم وكمية البيانات المنقولة إلى الخادم ومنه إلى إزالة هذا المؤثِّر.
- الذاكرة: عندما لا تتوفّر ذاكرة كافية في النظام، يجب نقل البيانات إلى القرص لتخزينها. القرص أبطأ إلى حد كبير من الذاكرة، ويمكن أن يؤدي هذا إلى إبطاء التطبيق بأكمله. وإذا نفدت الذاكرة تمامًا، يمكن أن يؤدي ذلك إلى حدوث أخطاء نفاد الذاكرة (OOM). يمكن أن يؤدي ضبط تخصيص الذاكرة وإصلاح تسرُّب الذاكرة وترقية الذاكرة إلى إزالة هذا المؤثِّر.
- عمليات إدخال/إخراج القرص: يتم تقييد معدل قراءة البيانات أو كتابتها من القرص على القرص. إذا كان إدخال/إخراج القرص يمثل عقبة، فإن زيادة كمية البيانات المخزنة مؤقتًا في الذاكرة يمكن أن تخفف من هذه المشكلة (على حساب زيادة استخدام الذاكرة). إذا لم ينجح هذا، فقد يكون من الضروري ترقية أقراصك.
تركز الأساليب في هذا الدليل على معالجة المعوقات في وحدة المعالجة المركزية (CPU) والشبكة. بالنسبة إلى معظم المواقع الإلكترونية، ستكون وحدة المعالجة المركزية (CPU) والشبكة هي المؤثِّرات السلبية الأكثر صلة أثناء الارتفاع المفاجئ في عدد الزيارات.
يمثّل تشغيل top
على الخادم المتأثّر نقطة بداية جيدة لالتحقّق من المؤثِّرات السلبية. أضِف البيانات السابقة من المستضيف أو أدوات المراقبة، إن توفّرت.
توازن
يمكن أن يؤدي الخادم الزائد عن الحد بشكل سريع إلى إخفاقات متتالية في مكان آخر في النظام. ولذلك، من المهم استقرار الخادم قبل محاولة إجراء تغييرات أكثر أهمية.
تحديد المعدَّل
يعمل الحد من معدل الزحف على حماية البنية الأساسية من خلال الحد من عدد الطلبات الواردة. وتتزايد أهمية هذا الأمر كلما تراجع أداء الخادم: فمع زيادة أوقات الاستجابة، يميل المستخدمون إلى إعادة تحميل الصفحة بشكل مكثف، ما يزيد من الحِمل على الخادم.
إصلاح
على الرغم من أنّ رفض الطلب غير مكلف نسبيًا، فإنّ أفضل طريقة لحماية الخادم هي التعامل مع الحدّ من معدّل الزحف في مكان ما من مصدره، وذلك من خلال موازن تحميل أو وكيل عكسي أو شبكة توصيل محتوى (CDN) مثلاً.
التعليمات:
قراءات إضافية:
التخزين المؤقت لبروتوكول HTTP
البحث عن طرق لتخزين المحتوى مؤقتًا بشكل أكثر صرامة إذا كان من الممكن عرض مورد من ذاكرة التخزين المؤقت لبروتوكول HTTP (سواء كانت ذاكرة التخزين المؤقت للمتصفّح أو شبكة توصيل للمحتوى)، ليس من الضروري طلبه من خادم المصدر، ما يقلّل من حِمل الخادم.
تشير عناوين HTTP، مثل Cache-Control
وExpires
وETag
إلى كيفية تخزين المورد في ذاكرة التخزين المؤقت من خلال ذاكرة التخزين المؤقت لبروتوكول HTTP. سيؤدي تدقيق هذه العناوين وإصلاحها إلى تحسين التخزين المؤقت.
على الرغم من إمكانية استخدام مشغِّلي الخدمات أيضًا للتخزين المؤقت، يستخدمون ذاكرة تخزين مؤقت منفصلة تمثل عنصرًا تكميليًا، وليس كبديل، من أجل التخزين المؤقت السليم لبروتوكول HTTP. لهذا السبب، عند التعامل مع خادم يواجه زيادة في التحميل، يجب تركيز الجهود على تحسين التخزين المؤقت لبروتوكول HTTP.
التشخيص
شغِّل Lighthouse وألقِ نظرة على تدقيق عرض أصول ثابتة باستخدام سياسة ذاكرة تخزين مؤقت فعالة لعرض قائمة بالموارد التي تستغرق وقتًا قصيرًا إلى متوسطًا للبقاء (TTL). بالنسبة إلى كل مورد مدرج، يجب مراعاة ما إذا كان يجب زيادة مدة البقاء (TTL). كدليل تقريبي:
- يجب تخزين الموارد الثابتة مؤقتًا باستخدام مدة حياة طويلة (سنة واحدة).
- يجب تخزين الموارد الديناميكية مؤقتًا باستخدام مدة البقاء (3 ساعات) قصيرة.
إصلاح
يمكنك ضبط التوجيه max-age
لعنوان Cache-Control
على عدد الثواني المناسب.
التعليمات:
التقليص السلس
التقليص السلس هو استراتيجية لتقليل الوظائف مؤقتًا من أجل التخلص من الحِمل الزائد من النظام. ويمكن تطبيق هذا المفهوم بعدة طرق مختلفة: على سبيل المثال، عرض صفحة نصية ثابتة بدلاً من تطبيق كامل الميزات، أو إيقاف البحث أو عرض نتائج بحث أقل، أو إيقاف ميزات معيّنة باهظة الثمن أو غير أساسية. يجب التركيز على إزالة الوظائف التي يمكن إزالتها بأمان وسهولة بأقل تأثير على العمل.
تحسين
استخدام شبكة توصيل المحتوى (CDN)
يمكن نقل عرض الأصول الثابتة من الخادم إلى شبكة توصيل المحتوى (CDN)، ما يؤدي إلى تقليل الحِمل.
تكمن الوظيفة الأساسية لشبكة توصيل المحتوى (CDN) في تقديم المحتوى إلى المستخدمين بسرعة من خلال توفير شبكة كبيرة من الخوادم القريبة من المستخدمين. ومع ذلك، توفّر معظم شبكات توصيل المحتوى (CDN) أيضًا ميزات إضافية مرتبطة بالأداء مثل الضغط وموازنة التحميل وتحسين الوسائط.
إعداد شبكة توصيل للمحتوى
تستفيد شبكات توصيل المحتوى (CDN) من الحجم، لذا نادرًا ما يكون تشغيل شبكة توصيل المحتوى الخاصة بك منطقيًا. يعد الإعداد الأساسي لشبكة توصيل المحتوى (CDN) سريعًا إلى حد ما (حوالي 30 دقيقة) ويتألف من تحديث سجلات نظام أسماء النطاقات للإشارة إلى شبكة توصيل المحتوى (CDN).
تحسين استخدام شبكة توصيل المحتوى (CDN)
التشخيص
حدِّد الموارد التي لا يتم عرضها من شبكة توصيل للمحتوى (ولكن يجب أن يحدث ذلك) من خلال تشغيل WebPageTest. في صفحة النتائج، انقر على المربع فوق "الاستخدام الفعال لشبكة توصيل المحتوى (CDN)" لعرض قائمة الموارد التي يجب تقديمها من شبكة توصيل المحتوى (CDN).
![سهم يشير إلى زر "الاستخدام الفعال لشبكة توصيل المحتوى (CDN)"](https://web.dev/static/articles/overloaded-server/image/arrow-pointing-the-effe-b5f163f623b97.jpg?authuser=5&hl=ar)
إصلاح
إذا كانت شبكة توصيل المحتوى لا يتم تخزينها مؤقتًا، يُرجى التأكّد من استيفاء الشروط التالية:
- ويحتوي على عنوان
Cache-Control: public
. - ويحتوي على عنوان
Cache-Control: s-maxage
أوCache-Control: max-age
أوExpires
. - وهي تتضمن
Content-Length
أوContent-Range
أوTransfer-Encoding header
.
قياس موارد الحوسبة
يجب اتخاذ قرار توسيع نطاق موارد الحوسبة بعناية. على الرغم من أنه غالبًا ما يكون من الضروري توسيع نطاق موارد الحوسبة، إلا أن القيام بذلك في وقت أبكر من السابق يمكن أن يولد تعقيدات معمارية غير ضرورية وتكاليف مالية.
التشخيص
قد يشير ارتفاع وقت وصول أول بايت (TTFB) إلى أنّ الخادم يوشك على بلوغ الحدّ الأقصى من السعة. يمكنك العثور على هذه المعلومات في عملية تدقيق Lighthouse في أداة تقليل أوقات استجابة الخادم (TTFB).
لإجراء المزيد من التحقيق، استخدم أداة مراقبة لتقييم استخدام وحدة المعالجة المركزية (CPU). إذا تجاوز استخدام وحدة المعالجة المركزية الحالي أو المتوقع نسبة 80%، يجب أن تفكر في زيادة الخوادم.
إصلاح
تتيح إضافة موازن تحميل إمكانية توزيع حركة البيانات عبر خوادم متعددة. يقع موازن التحميل أمام مجموعة من الخوادم ويوجه حركة المرور إلى الخادم المناسب. يوفّر مقدّمو خدمات السحابة الإلكترونية أجهزة موازنة الحمل الخاصة بهم (GCP أو AWS أو Azure) أو يمكنك إعداد أجهزة موازنة الحمل الخاصة بهم باستخدام HAProxy أو NGINX. وبمجرد وضع موازن تحميل، يمكن إضافة خوادم إضافية.
بالإضافة إلى موازنة التحميل، يوفّر معظم مقدّمي خدمات السحابة الإلكترونية التحجيم التلقائي (GCP وAWS وAzure). يعمل تغيير الحجم التلقائي إلى جانب موازنة التحميل، حيث يعدِّل تغيير الحجم تلقائيًا موارد الحوسبة لأعلى ولأسفل عند الطلب في وقت معيّن. ومع ذلك، لا يعد القياس التلقائي سحرية، إذ إنّه يستغرق بعض الوقت حتى تظهر المثيلات الجديدة على الإنترنت كما يتطلّب ضبطًا كبيرًا. وبسبب التعقيد الإضافي الذي ينطوي عليه القياس التلقائي، يجب أولاً استخدام إعداد أبسط قائم على موازن التحميل.
تفعيل الضغط
يجب ضغط الموارد المستندة إلى النص باستخدام برنامج gzip أو botli. ويمكن لخدمة Gzip تقليل حجم نقل هذه الموارد بنسبة 70% تقريبًا.
التشخيص
استخدِم تدقيق تفعيل ضغط النص في Lighthouse لتحديد الموارد التي يجب ضغطها.
إصلاح
يمكنك تفعيل الضغط من خلال تعديل إعدادات الخادم. التعليمات:
تحسين الصور والوسائط
تشكّل الصور معظم حجم الملفات في معظم المواقع الإلكترونية، لذلك، فإنّ تحسين الصور يمكن أن يؤدي إلى تقليل حجم الموقع الإلكتروني بسرعة وبشكلٍ كبير.
التشخيص
تتضمن أداة Lighthouse مجموعة متنوعة من عمليات التدقيق التي تحدد التحسينات المحتملة للصور. هناك استراتيجية أخرى تتمثّل في استخدام أدوات مطوّري البرامج لتحديد أكبر ملفات الصور، ومن المحتمل أن تكون هذه الصور مرشحة بشكل جيد للتحسين.
عمليات تدقيق Lighthouse ذات الصلة:
- اختيار حجم مناسب للصور
- تأجيل الصور خارج الشاشة
- ترميز الصور بكفاءة
- عرض الصور بتنسيقات الجيل التالي
- استخدام تنسيقات الفيديو لمحتوى الرسوم المتحركة
سير عمل "أدوات مطوري البرامج في Chrome":
- تسجيل نشاط الشبكة
- انقر على نقل لفلترة الموارد غير المتعلقة بالصور.
- انقر على عمود الحجم لترتيب ملفات الصور حسب الحجم
إصلاح
إذا كان لديك وقت محدود...
ركِّز وقتك على تحديد الصور الكبيرة والتي يتم تحميلها بشكل متكرر وتحسينها يدويًا باستخدام أداة مثل Squoosh. غالبًا ما تكون الصور الرئيسية مرشحة بشكل جيد للتحسين.
نقاط يجب مراعاتها:
- الحجم: يجب ألا تكون الصور أكبر من اللازم.
- الضغط: بشكل عام، يؤثر مستوى الجودة من 80 إلى 85 بشكل ضئيل على جودة الصورة، ويؤدي إلى تقليل حجم الملف بنسبة تتراوح بين %30 و 40%.
- التنسيق: استخدِم ملفات JPEG للصور بدلاً من PNG، واستخدِم ملف MP4 للمحتوى المتحرك بدلاً من GIF.
إذا كان لديك مزيد من الوقت...
يمكنك إعداد شبكة توصيل محتوى (CDN) لصورة إذا كانت الصور تشكّل جزءًا كبيرًا من موقعك الإلكتروني. تم تصميم شبكات توصيل الصور (CDN) للصور لعرض الصور وتحسينها، وستعمل على تفريغ تحميل الصور من خادم المصدر. من السهل إعداد شبكة توصيل للمحتوى للصور، ولكنه يتطلّب تعديل عناوين URL الحالية للصور للإشارة إلى شبكة توصيل المحتوى (CDN) للصورة.
قراءات إضافية:
تصغير JavaScript وCSS
ويؤدي تصغير البيانات إلى إزالة الأحرف غير الضرورية من JavaScript وCSS.
التشخيص
يمكنك استخدام عمليات تدقيق Lighthouse في Minify CSS وMinify JavaScript لتحديد الموارد التي تحتاج إلى تصغير.
إصلاح
إذا كان لديك وقت محدود، ركِّز على تصغير لغة JavaScript. وتحتوي معظم المواقع الإلكترونية على JavaScript أكثر من CSS، لذا سيكون هذا أكثر تأثيرًا.
المراقبة
توفر أدوات مراقبة الخادم جمع البيانات ولوحات المعلومات والتنبيه بشأن أداء الخادم. ويمكن أن يساعد استخدامها على منع مشاكل أداء الخادم في المستقبل والحدّ منها.
ويجب الإبقاء على عملية إعداد المراقبة بسيطة قدر الإمكان. هناك تكاليف كثيرة لجمع البيانات وتنبيهها: كلما زاد نطاق جمع البيانات أو معدّل تكرارها، زادت تكلفة جمعها وتخزينها، ويؤدي حتمًا الإفراط في التنبيهات إلى تجاهل الصفحات.
يجب أن يستخدم التنبيهات مقاييس ترصد المشاكل بدقة وتناسق. ويُعدّ وقت استجابة الخادم (وقت الاستجابة) مقياسًا جيدًا لتحقيق ذلك، فهو يكشف عن مجموعة كبيرة من المشاكل ويرتبط مباشرةً بتجربة المستخدِم. قد يكون التنبيه المستنِد إلى المقاييس المنخفضة المستوى، مثل استخدام وحدة المعالجة المركزية (CPU)، مكملاً مفيدًا، ولكنه سيكتشف مجموعة فرعية أصغر من المشاكل. إضافةً إلى ذلك، يجب أن يستند التنبيه إلى الأداء الملاحظ في الجزء السفلي (أي في شريحة 95 أو 99 في المئة)، بدلاً من المتوسطات. بخلاف ذلك، يمكن أن تؤدي المتوسطات بسهولة إلى إخفاء المشاكل التي لا تؤثر على جميع المستخدمين.
إصلاح
يوفّر جميع مقدّمي الخدمات السحابية الرئيسيين أدوات المراقبة الخاصة بهم (GCP وAWS وAzure). بالإضافة إلى ذلك، تعتبر Netdata بديلاً ممتازًا مجانيًا ومفتوحة المصدر. بغض النظر عن الأداة التي تختارها، سوف تحتاج إلى تثبيت وكيل مراقبة الأداة على كل خادم تريد مراقبته. بعد اكتمال عملية الإضافة، تأكَّد من ضبط إعدادات التنبيه.
التعليمات: