Ce ar trebui să fac dacă serverul Nginx are o încărcare mare a CPU și o utilizare a memoriei de procesare?

Ați descoperit brusc la locul de muncă că utilizarea procesorului Nginx a crescut vertiginos? Pentru a înrăutăți lucrurile, procesele multiple ale lui Nginx consumă resurse ca nebun de fiecare dată când mă uit la procese.

Văzând această scenă, ți se încinge capul și nu te poți abține să strigi: „O, Doamne, serverul va exploda, nu-ți face griji, asta nu înseamnă că serverul tău va fi „terminat”. dar Nginx Avem nevoie de tine pentru a face o optimizare cuprinzătoare!

Analiza cauzelor încărcării excesive a Nginx

Ce ar trebui să fac dacă serverul Nginx are o încărcare mare a CPU și o utilizare a memoriei de procesare?

În primul rând, trebuie să ne dăm seama,De ce Nginx devine brusc „epuizat”?Există multe motive pentru problemă, nu vă fie teamă, să aflăm împreună mai jos.

1. Configurație nerezonabilă

În fișierul de configurare Nginx, cel mai important punct este worker_processes. Acest parametru determină numărul de procese începute de Nginx.

  • Dacă configurați prea puține procese de lucru, sarcina procesorului va crește dacă configurați prea multe, va fi memorie insuficientă.
  • Trebuie să găsiți un punct de echilibru, de exemplu,Setați worker_processes la de 1 până la 2 ori numărul de nuclee CPU.
  • Dacă aveți 4 nuclee, încercați worker_processes 4 Sau setați-l direct la auto.

2. Vizitele cresc

Uneori, încărcarea lui Nginx crește brusc nu pentru că ați făcut o greșeală, ci pentru că numărul de vizite este prea mare.Solicitările de acces extrem de simultane vor face ca procesul de lucru Nginx să fie copleșit., fiecare proces este supraîncărcat, iar procesorul și memoria sunt, de asemenea, pline. În acest moment, poate fi necesar să îmbunătățiți resursele serverului, cum ar fi creșterea numărului de nuclee CPU sau creșterea memoriei. Desigur, acesta este și un memento: nu uitați să luați în considerare descărcarea CDN-ului sau echilibrarea încărcăturii.

3. Am întâlnit atacuri rău intenționate

A fi „foarte popular” pe Internet nu este întotdeauna un lucru bun. Atacurile rău intenționate vă pot viza în orice moment. Dacă descoperiți că utilizarea CPU este anormal de mare și sursa IP-ului solicitării este suspectă, este foarte probabil ca site-ul dvs. web să sufere de un atac DDoS. În acest moment,Trebuie să implementați imediat un firewall sau să limitați frecvența de acces, cum ar fi utilizarea modulului de limitare curent care vine cu Nginx sau configurarea unei liste negre de IP.

Cum se rezolvă problema utilizării mari a memoriei procesului Nginx?

Deci întrebarea este de ce procesul de lucru Nginx ocupă atât de multe resurse? Trebuie să începem cu configurarea și să o optimizăm pas cu pas.

Metoda de configurare

  1. Deschideți fișierul de configurare Nginx: De obicei, fișierul principal de configurare al lui Nginx se află la /etc/nginx/nginx.conf.

  2. Înființat worker_processes: Găsit în fișierul de configurare events blocuri, setari worker_processes valoare. dacă nu events bloc, trebuie să creați unul.

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

1. Setați corect worker_connections

nginx worker_connections Parametrul determină numărul maxim de conexiuni pe care le poate gestiona fiecare proces de lucru. Dacă este prea mic, va afecta performanța concurenței, dacă este prea mare, poate consuma prea multe resurse.

Cum se calculează valoarea potrivită?

Presupunând că aveți un procesor cu 4 nuclee și 16 GB de RAM, un punct de pornire sigur este worker_connections 4096.

Dar dacă site-ul dvs. are mult trafic, luați în considerare creșterea acestei valori la 8192 pentru a vă asigura că fiecare proces poate gestiona suficiente solicitări.

events {
    worker_connections 8192;
}

În acest fel, puterea de procesare a lui Nginx va fi mult îmbunătățită.

2. Ajustați keepalive_timeout

Un alt parametru cheie pentru ca Nginx să gestioneze cererile este keepalive_timeout.

Această setare determină cât timp poate fi menținută conexiunea clientului la server.

Dacă se setează prea mult timp, va ocupa prea multe resurse de conexiune..

Poți încerca keepalive_timeout Setați la 15 secunde pentru a menține conexiunea și a elibera resurse.

keepalive_timeout 15;

3. Optimizați limitele descriptoarelor de fișiere

Implicit,Linux Sistemul are o limită a numărului de descriptori de fișiere care pot fi deschise de fiecare proces.

Dacă Nginx trebuie să proceseze un număr mare de fișiere (cum ar fi resurse statice), este posibil să vedeți o eroare de la Nginx, care va solicita „too many open files“.

poti trece worker_rlimit_nofile Măriți limita descriptorului fișierului, de exemplu setat la 65535.

worker_rlimit_nofile 65535;

4. Activați stocarea în cache și gzip

Memorarea în cache și compresia sunt două chei pentru optimizarea performanței site-ului.

Prin activarea funcției de cache a lui Nginx, resursele statice (cum ar fi imaginile și fișierele JS) pot fi stocate în cache în memorie, reducând astfel foarte mult sarcina de pe server.

În plus, activarea funcției de compresie gzip poate reduce cantitatea de date transmise și poate îmbunătăți viteza site-ului.

gzip on;
gzip_types text/plain application/javascript;

5. Analizați utilizarea resurselor Nginx

În cele din urmă, dacă ați finalizat toate optimizările de mai sus, dar Nginx încă ocupă mult CPU, poate fi necesar să utilizați unele instrumente pentru o analiză aprofundată.

utilizare tophtop Vizualizați consumul de resurse în timp real al unui proces,trece strace Urmăriți apelurile de sistem sau utilizați nmon Generați rapoarte de performanță. Numai analizând cuprinzător funcționarea reală a lui Nginx putem efectua o reglare mai precisă.

总结

Nu intrați în panică când utilizarea procesorului lui Nginx crește. Poate fi cauzat doar de o configurație necorespunzătoare sau de trafic excesiv.

prin ajustări rezonabile worker_processesworker_connectionsPrin activarea stocării în cache, optimizarea timeout-urilor și a descriptorilor de fișiere, puteți reduce semnificativ presiunea de încărcare a Nginx.

Nginx este un server web puternic care, atunci când este optimizat corespunzător, poate oferi performanțe excelente pentru site-ul dvs.

Amintiți-vă, la orice întrebări se poate răspunde prinștiințămetode de rezolvare, optimizarea performanței serverului nu face excepție.

Monitorizați și ajustați în timp util, este cheia pentru a menține Nginx să ruleze eficient. Dacă poți stăpâni aceste tehnici, site-ul tău va fi în siguranță chiar și în fața traficului mare sau a atacurilor rău intenționate.

Sper că acest articol te-a inspirat, grăbește-te și optimizează-ți Nginx-ul!

发表 评论

Adresa ta de e-mail nu va fi publicată. Sunt utilizate câmpurile obligatorii * Eticheta

Derulaţi în sus