كيفية ترتيب خادم مثقل؟

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

  1. تقييم الموقف: تحديد اختناق أداء الخادم.
  2. استقرار الخادم: اتخذ خطوات عاجلة لتحسين الوضع.
  3. تحسين النظام: توسيع وتحسين إمكانيات النظام.
  4. مراقبة الخادم: استخدام الأدوات الآلية لمنع حدوث المشكلات.



1. تقييم الوضع


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

  • . , 80%, , . , 80-90%. 100%, . , , . , , , «» . , , , , .
  • . , , , , . , -, , . , , .
  • . , . , . . , (Out Of Memory, OOM). , , , .
  • /. , , , , . , , , (, ). — , .

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

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

2. استقرار الخادم


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

▍ الحد من سرعة معالجة الاستعلام


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

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


فيما يلي مواد حول تقليل حمل الخادم باستخدام أساليب مختلفة لتحديد سرعة معالجة الطلب.

التخزين المؤقت ▍HTTP


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

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

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

التشخيص


قم بتشغيل Lighthouse وإلقاء نظرة على الأصول الثابتة Serve مع مقياس سياسة التخزين المؤقت الفعال لعرض قائمة بالموارد ذات أوقات التخزين المؤقت القصيرة والمتوسطة ( Time To Live ، TTL). مراجعة الموارد المدرجة والنظر في زيادة مدة البقاء. فيما يلي شروط التخزين المؤقت المقدرة التي تنطبق على الموارد المختلفة.

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

إعداد ذاكرة التخزين المؤقت


من الضروري كتابة وقت التخزين المؤقت الضروري ، معبرًا عنه بالثواني ، في توجيه max-ageرأس التحكم في ذاكرة التخزين المؤقت . إليك تعليمات حول تعيين هذا الرأس على أنظمة مختلفة:


لاحظ أن التوجيه max-ageهو مجرد واحد من العديد من التوجيهات التي تؤثر على التخزين المؤقت. هناك توجيهات أخرى ورؤوس أخرى تؤثر على ميزات ذاكرة التخزين المؤقت. من أجل فهم أفضل لهذه المسألة، فمن المستحسن أن تقرأ هذا دليل التخزين المؤقت HTTP.

reduction التخفيض التدريجي لقدرات النظام


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

3. تحسين النظام


▍ استخدام CDN


يمكن نقل مهمة خدمة الموارد الثابتة من الخادم إلى شبكة تسليم المحتوى (CDN). سيؤدي ذلك إلى تقليل الحمل على الخادم.

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

إعداد CDN


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

تحسين CDN: دراسة حالة


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


نتائج WebPageTest

حل المشاكل


إذا لم يتم تخزين الموارد مؤقتًا باستخدام شبكة CDN ، اكتشف ما إذا كانت الشروط التالية صحيحة:


resources تحجيم موارد الحوسبة


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

التشخيص


قد يكون مؤشر الوقت العالي للبايت الأول ( Time To First Byte ، TTFB) علامة على أن الخادم يقترب من حدوده. يمكنك العثور على معلومات TTFB في قسم تقليل أوقات استجابة الخادم (TTFB) من تقرير المنارة.

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

حل المشاكل


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

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

comp استخدام ضغط البيانات


يجب ضغط الموارد النصية باستخدام خوارزمية gzip أو brotli. في بعض الحالات ، يمكن أن يساعد الضغط في تقليل حجم هذه الموارد بحوالي 70٪.

التشخيص


للعثور على الموارد التي تحتاج إلى ضغط ، يمكنك استخدام مؤشر تمكين ضغط النص من تقرير المنارة.

حل المشاكل


لتمكين الضغط ، تحتاج إلى تعديل إعدادات الخادم. إليك التفاصيل حول هذا:


pt تحسين الصور والمواد الإعلامية الأخرى


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

التشخيص


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

فيما يلي قائمة بمقاييس تقرير LightHouse التي يجب الانتباه إليها عند استكشاف إمكانية تحسين الصورة:


إذا كنت تستخدم أدوات مطوري Chrome لمساعدتك في تحسين صورك ، فيمكنك اتباع الخطوات التالية:

  • تسجيل نشاط الشبكة للصفحة.
  • انقر على Imgل مرشح الموارد غير صورة.
  • انقر فوق عمود Sizeلفرز ملفات الصور حسب الحجم.

حل المشاكل


أولاً ، لنتحدث عما يجب فعله إذا كان لديك القليل من الوقت.

في مثل هذه الحالة ، يجب الانتباه إلى الصور الكبيرة ، والصور التي يتم تنزيلها أكثر من غيرها. بعد العثور عليهم ، يجب أن يخضعوا للتحسين اليدوي ، باستخدام أداة مثل Squoosh . عادةً ما تكون الصور الكبيرة مرشحة جيدة للتحسين. على سبيل المثال ، مأخوذة من مورد مثل Hero Images .

إليك ما تحتاج إلى الانتباه إليه عند تحسين الصور:

  • الحجم: يجب ألا تكون الصور أكبر من اللازم.
  • : , 80-85 , 30-40% .
  • : JPEG, PNG. MP4, GIF.

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

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

inتصحيح JavaScript و CSS


يسمح لك تصغير الرمز بتقليل حجمه عن طريق إزالة الأحرف غير الضرورية.

التشخيص


ألق نظرة على مقاييس Minify CSS و Minify JavaScript في تقرير المنارة لتحديد الموارد التي تحتاج إلى تصغير.

حل المشاكل


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

4. مراقبة الخادم


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

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

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

إعداد المراقبة


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


ملخص


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

القراء الأعزاء! ماذا تفعل في موقف يبدأ فيه الخادم الذي يعمل عليه مشروعك في الإبطاء؟


All Articles