ماذا علي أن أفعل إذا كان خادم Nginx يحتوي على حمل كبير على وحدة المعالجة المركزية واستخدام ذاكرة المعالجة؟

هل اكتشفت فجأة في العمل أن استخدام وحدة المعالجة المركزية لـ Nginx قد ارتفع بشكل كبير؟ ومما يزيد الأمر سوءًا أن عمليات Nginx المتعددة تستهلك الموارد بجنون في كل مرة أنظر فيها إلى العمليات.

عند رؤية هذا المشهد، يسخن رأسك ولا يمكنك إلا أن تصرخ: "يا إلهي، هل سينفجر الخادم؟" لا تقلق، هذا لا يعني أن الخادم الخاص بك سوف "ينتهي"، ولكن Nginx نحن بحاجة إليك لإجراء تحسين شامل!

تحليل أسباب التحميل الزائد على Nginx

ماذا علي أن أفعل إذا كان خادم Nginx يحتوي على حمل كبير على وحدة المعالجة المركزية واستخدام ذاكرة المعالجة؟

أولاً علينا أن نكتشف،لماذا أصبح Nginx فجأة "منهكًا"؟هناك أسباب عديدة للمشكلة، لا تخف، فلنكتشفها معًا أدناه.

1. تكوين غير معقول

النقطة الأكثر أهمية في ملف تكوين Nginx هي worker_processes. تحدد هذه المعلمة عدد العمليات التي يبدأها Nginx.

  • إذا قمت بتكوين عدد قليل جدًا من العمليات المنفذة، فسوف يرتفع حمل وحدة المعالجة المركزية؛ وإذا قمت بتكوين عدد كبير جدًا، فلن تكون هناك ذاكرة كافية.
  • عليك أن تجد نقطة التوازن، على سبيل المثال،قم بتعيين العمليات العاملة على 1 إلى 2 أضعاف عدد مراكز وحدة المعالجة المركزية.
  • إذا كان لديك 4 النوى ثم حاول worker_processes 4 أو اضبطه مباشرة على auto.

2. تزايد الزيارات

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

3. واجهت هجمات ضارة

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

كيفية حل مشكلة استخدام الذاكرة العالية لعملية Nginx؟

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

طريقة التكوين

  1. افتح ملف تكوين Nginx: عادةً ما يوجد ملف التكوين الرئيسي لـ Nginx في /etc/nginx/nginx.conf.

  2. 设置 worker_processes: موجود في ملف التكوين events الكتل والإعدادات worker_processes قيمة. إذا لم يكن كذلك events كتلة، تحتاج إلى إنشاء واحدة.

    nginx
    events {
    worker_connections 1024;
    use epoll;  # 或者适用于操作系统的其他事件模型
    }

1. قم بتعيين عامل_اتصالات بشكل صحيح

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

كيف تحسب القيمة المناسبة؟

بافتراض أن لديك وحدة معالجة مركزية رباعية النواة وذاكرة وصول عشوائي (RAM) سعة 4 جيجابايت، فإن نقطة البداية الآمنة هي worker_connections 4096.

ولكن إذا كان موقع الويب الخاص بك يتمتع بعدد كبير من الزيارات، ففكر في زيادة هذه القيمة إلى 8192 للتأكد من أن كل عملية يمكنها التعامل مع ما يكفي من الطلبات.

events {
    worker_connections 8192;
}

بهذه الطريقة، سيتم تحسين قوة معالجة Nginx بشكل كبير.

2. ضبط keepalive_timeout

معلمة رئيسية أخرى لـ Nginx للتعامل مع الطلبات هي keepalive_timeout.

يحدد هذا الإعداد المدة التي يمكن خلالها الحفاظ على اتصال العميل بالخادم.

إذا تم تعيينه لفترة طويلة جدًا، فسوف يشغل عددًا كبيرًا جدًا من موارد الاتصال..

يمكنك أن تحاول ذلك keepalive_timeout اضبط على 15 ثانية للحفاظ على الاتصال وتحرير الموارد.

keepalive_timeout 15;

3. تحسين حدود واصف الملف

بشكل افتراضي،لينكس لدى النظام حد لعدد واصفات الملفات التي يمكن فتحها بواسطة كل عملية.

إذا كان Nginx يحتاج إلى معالجة عدد كبير من الملفات (مثل الموارد الثابتة)، فقد ترى خطأ من Nginx، يطالبك "too many open files".

يمكنك تمرير worker_rlimit_nofile زيادة الحد الأقصى لواصف الملف، على سبيل المثال اضبط على 65535.

worker_rlimit_nofile 65535;

4. تمكين التخزين المؤقت وgzip

يعد التخزين المؤقت والضغط مفتاحين لتحسين أداء موقع الويب.

من خلال تمكين وظيفة التخزين المؤقت لـ Nginx، يمكن تخزين الموارد الثابتة (مثل الصور وملفات JS) مؤقتًا في الذاكرة.، وبالتالي تقليل الحمل على الخادم بشكل كبير.

بالإضافة إلى ذلك، يمكن أن يؤدي تشغيل وظيفة ضغط gzip إلى تقليل كمية البيانات المنقولة وتحسين سرعة موقع الويب.

gzip on;
gzip_types text/plain application/javascript;

5. تحليل استخدام موارد Nginx

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

استعمال tophtop عرض استهلاك الموارد في الوقت الحقيقي للعملية،يمر strace تتبع مكالمات النظام، أو استخدامها nmon توليد تقارير الأداء. فقط من خلال التحليل الشامل للتشغيل الفعلي لـ Nginx يمكننا إجراء ضبط أكثر دقة.

ملخص

لا داعي للذعر عندما يرتفع استخدام وحدة المعالجة المركزية لـ Nginx. قد يكون السبب في ذلك هو التكوين غير الصحيح أو حركة المرور الزائدة.

من خلال تعديلات معقولة worker_processes و worker_connectionsمن خلال تمكين التخزين المؤقت وتحسين المهلات وواصفات الملفات، يمكنك تقليل ضغط التحميل على Nginx بشكل كبير.

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

تذكر أنه يمكن الرد على أي أسئلة من خلالعلمطرق لحلها، وتحسين أداء الخادم ليس استثناءً.

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

أتمنى أن يكون هذا المقال قد ألهمك، أسرع وقم بتحسين Nginx الخاص بك!

مدونة Hope Chen Weiliang ( https://www.chenweiliang.com/ ) شارك "ماذا علي أن أفعل إذا كان تحميل وحدة المعالجة المركزية لخادم Nginx واستخدام ذاكرة العملية مرتفعًا؟" 》، مفيد لك.

مرحبا بكم في مشاركة رابط هذه المقالة:https://www.chenweiliang.com/cwl-32093.html

لاكتشاف المزيد من الحيل المخفية🔑، مرحبًا بك في الانضمام إلى قناتنا على Telegram!

مشاركة ومثل إذا كنت ترغب في ذلك! مشاركاتك وإعجاباتك هي حافزنا المستمر!

 

发表 评论

لن يتم نشر عنوان بريدك الإلكتروني. 必填 项 已 用 * 标注

انتقل إلى الأعلى