Imenik članaka
Jeste li iznenada na poslu otkrili da je Nginxova upotreba CPU-a naglo porasla? Da stvar bude gora, višestruki radnički procesi Nginxa troše resurse kao ludi svaki put kad pogledam procese.
Gledajući ovu scenu, glava vam se užari i ne možete pomoći da vičete: "O moj Bože, hoće li server eksplodirati, ne brinite, to ne znači da će vaš server biti "gotov", ali Nginx Trebamo vas za sveobuhvatnu optimizaciju!
Analiza uzroka prekomjernog opterećenja Nginxa

Prvo, moramo shvatiti,Zašto Nginx odjednom postaje "iscrpljen"?Mnogo je razloga za problem, ne bojte se, saznajmo zajedno u nastavku.
1. Nerazumna konfiguracija
U Nginx konfiguracijskoj datoteci najvažnija točka je worker_processes. Ovaj parametar određuje broj procesa koje pokreće Nginx.
- Ako konfigurirate premalo radnih procesa, opterećenje CPU-a će porasti; ako ih konfigurirate previše, neće biti dovoljno memorije.
- Morate pronaći točku ravnoteže, npr.Postavite worker_processes na 1 do 2 puta veći broj CPU jezgri.
- Ako imate 4 jezgre onda probajte
worker_processes 4Ili ga postavite izravno naauto.
2. Broj posjeta raste
Ponekad opterećenje Nginxa iznenada poraste ne zato što ste pogriješili, već zato što je broj posjeta previsok.Visoko istovremeni zahtjevi za pristup uzrokovat će preopterećenje Nginx radnog procesa., svaki proces je preopterećen, a CPU i memorija su također puni. U ovom trenutku možda ćete morati poboljšati resurse poslužitelja, poput povećanja broja CPU jezgri ili povećanja memorije. Naravno, ovo je također podsjetnik: ne zaboravite razmotriti CDN rasterećenje ili balansiranje opterećenja.
3. Susreo se sa zlonamjernim napadima
Biti "vrlo popularan" na internetu nije uvijek dobra stvar. Zlonamjerni napadi vas mogu ciljati u bilo kojem trenutku. Ako ustanovite da je korištenje CPU-a neuobičajeno visoko i da je izvor IP zahtjeva sumnjiv, vrlo je vjerojatno da vaša web stranica pati od DDoS napada. U ovom trenutku,Morate odmah postaviti vatrozid ili ograničiti učestalost pristupa, kao što je korištenje trenutnog ograničavajućeg modula koji dolazi s Nginxom ili postavljanje IP crne liste.
Kako riješiti problem velike upotrebe memorije Nginx procesa?
Pitanje je zašto Nginx radni proces zauzima toliko resursa? Moramo početi s konfiguracijom i optimizirati je korak po korak.
Metoda konfiguracije
Otvorite Nginx konfiguracijsku datoteku: Obično se glavna konfiguracijska datoteka Nginxa nalazi na
/etc/nginx/nginx.conf.Postaviti
worker_processes: Pronađeno u konfiguracijskoj datotecieventsblokovi, postavkeworker_processesvrijednost. ako nijeeventsblok, trebate ga izraditi.nginx events { worker_connections 1024; use epoll; # 或者适用于操作系统的其他事件模型 }
1. Ispravno postavljene worker_connections
nginx worker_connections Parametar određuje najveći broj veza koje svaki radni proces može obraditi. Ako je premalen, to će utjecati na performanse istovremenosti; ako je prevelik, može potrošiti previše resursa.
Kako izračunati odgovarajuću vrijednost?
Pod pretpostavkom da imate CPU s 4 jezgre i 16 GB RAM-a, sigurno je polazište worker_connections 4096.
Ali ako vaša web stranica ima puno prometa, razmislite o povećanju ove vrijednosti na 8192 kako biste osigurali da svaki proces može obraditi dovoljno zahtjeva.
events {
worker_connections 8192;
}
Na taj će se način procesorska snaga Nginxa znatno poboljšati.
2. Podesite keepalive_timeout
Drugi ključni parametar za Nginx za obradu zahtjeva je keepalive_timeout.
Ova postavka određuje koliko dugo se može održavati veza klijenta s poslužiteljem.
Ako se postavi predugo, zauzet će previše resursa veze..
Možete pokušati keepalive_timeout Postavite na 15 sekundi za održavanje veze i oslobađanje resursa.
keepalive_timeout 15;
3. Optimizirajte ograničenja deskriptora datoteke
Prema zadanim postavkamaLinux Sustav ima ograničenje broja deskriptora datoteka koje može otvoriti svaki proces.
Ako Nginx treba obraditi veliki broj datoteka (kao što su statički resursi), možda ćete vidjeti pogrešku od Nginxa, upit "too many open files”.
možete proći worker_rlimit_nofile Povećaj ograničenje deskriptora datoteke, na primjer postavljen na 65535.
worker_rlimit_nofile 65535;
4. Omogući predmemoriju i gzip
Predmemorija i kompresija dva su ključna za optimizaciju performansi web stranice.
Omogućavanjem Nginxove funkcije predmemoriranja, statički resursi (kao što su slike i JS datoteke) mogu se predmemorirati u memoriju, čime se uvelike smanjuje opterećenje poslužitelja.
Osim toga, uključivanje funkcije kompresije gzip može smanjiti količinu prenesenih podataka i poboljšati brzinu web stranice.
gzip on;
gzip_types text/plain application/javascript;
5. Analizirajte korištenje Nginx resursa
Konačno, ako ste dovršili sve gore navedene optimizacije, ali Nginx još uvijek zauzima puno CPU-a, možda ćete morati koristiti neke alate za dubinsku analizu.
使用 top Ili htop Pogledajte potrošnju resursa procesa u stvarnom vremenu,po strace Pratite pozive sustava ili koristite nmon Generirajte izvješća o izvedbi. Samo sveobuhvatnom analizom stvarnog rada Nginxa možemo izvršiti preciznije podešavanje.
总结
Nemojte paničariti kada Nginxova upotreba CPU-a naglo poraste. To može biti samo uzrokovano nepravilnom konfiguracijom ili pretjeranim prometom.
kroz razumne prilagodbe worker_processes 和 worker_connectionsOmogućavanjem predmemoriranja, optimiziranjem vremenskih ograničenja i deskriptora datoteka, možete značajno smanjiti pritisak opterećenja na Nginx.
Nginx je moćan web poslužitelj koji, kada je pravilno optimiziran, može pružiti izvrsne performanse za vašu web stranicu.
Zapamtite, na sva pitanja možete odgovoritiznanostmetode za njegovo rješavanje, optimizacija performansi poslužitelja nije iznimka.
Pratite i prilagođavajte na vrijeme, ključ je za održavanje učinkovitog rada Nginxa. Ako svladate ove tehnike, vaša će web stranica biti sigurna čak i u slučaju velikog prometa ili zlonamjernih napada.
Nadam se da vas je ovaj članak inspirirao, požurite i optimizirajte svoj Nginx!
Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) shared "Nginx server CPU opterećenje, upotreba memorije procesa je velika, što da radim?" 》, korisno za vas.
Dobrodošli da podijelite vezu ovog članka:https://www.chenweiliang.com/cwl-32093.html
Za otključavanje još skrivenih trikova🔑, dobrodošli da se pridružite našem Telegram kanalu!
Podijelite i lajkajte ako vam se sviđa! Vaša dijeljenja i lajkovi naša su daljnja motivacija!