Straipsnių katalogas
Ar staiga darbe pastebėjote, kad Nginx procesoriaus naudojimas smarkiai išaugo? Dar blogiau tai, kad Nginx kelių darbuotojų procesai kaip beprotiškai eikvoja išteklius kiekvieną kartą, kai žiūriu į procesus.
Pamačius šią sceną tau įkaista galva ir negalite šaukti: "O Dieve, ar serveris sprogs Nesijaudink, tai nereiškia, kad jūsų serveris bus "pabaigtas"? Nginx Mums reikia, kad atliktumėte visapusišką optimizavimą!
Per didelės Nginx apkrovos priežasčių analizė

Pirmiausia turime išsiaiškinti,Kodėl Nginx staiga „išsenka“?Problemos priežasčių yra daug, nebijokite, kartu išsiaiškinkime toliau.
1. Neprotinga konfigūracija
Nginx konfigūracijos faile svarbiausias dalykas yra worker_processes. Šis parametras nustato Nginx pradėtų procesų skaičių.
- Jei sukonfigūruosite per mažai darbinių procesų, procesoriaus apkrova padidės, jei sukonfigūruosite per daug, nebus pakankamai atminties.
- Turite rasti pusiausvyros tašką, pvz.Nustatykite worker_processes 1–2 kartus daugiau nei procesoriaus branduolių skaičius.
- Jei turite 4 branduolius, pabandykite
worker_processes 4Arba nustatykite tiesiai įauto.
2. Padidėja apsilankymų skaičius
Kartais „Nginx“ apkrova staiga padidėja ne todėl, kad suklydote, o todėl, kad apsilankymų skaičius per didelis.Labai vienu metu pateikiamos prieigos užklausos sukels „Nginx“ darbuotojo procesą., kiekvienas procesas yra perkrautas, o CPU ir atmintis taip pat yra pilni. Šiuo metu gali tekti pagerinti serverio išteklius, pvz., padidinti procesoriaus branduolių skaičių arba padidinti atmintį. Žinoma, tai taip pat yra priminimas: nepamirškite apsvarstyti CDN iškrovimo arba apkrovos balansavimo.
3. Susidūrė su kenkėjiškomis atakomis
Būti „labai populiariam“ internete ne visada yra geras dalykas. Jei pastebėsite, kad procesoriaus naudojimas yra neįprastai didelis, o užklausos IP šaltinis yra įtartinas, labai tikėtina, kad jūsų svetainė kenčia nuo DDoS atakos. Šiuo metuTurite nedelsiant įdiegti ugniasienę arba apriboti prieigos dažnį, pvz., naudojant dabartinį ribojantį modulį, pateiktą kartu su Nginx, arba nustatyti IP juodąjį sąrašą.
Kaip išspręsti didelio Nginx proceso atminties naudojimo problemą?
Taigi kyla klausimas, kodėl Nginx darbuotojo procesas užima tiek daug išteklių? Turime pradėti nuo konfigūracijos ir žingsnis po žingsnio ją optimizuoti.
Konfigūravimo metodas
Atidarykite Nginx konfigūracijos failą: Paprastai pagrindinis Nginx konfigūracijos failas yra adresu
/etc/nginx/nginx.conf.Nustatyti
worker_processes: rasta konfigūracijos faileeventsblokai, nustatymaiworker_processesvertė. jei neeventsbloką, turite jį sukurti.nginx events { worker_connections 1024; use epoll; # 或者适用于操作系统的其他事件模型 }
1. Tinkamai nustatykite worker_connections
nginx worker_connections Parametras nustato maksimalų jungčių skaičių, kurį gali apdoroti kiekvienas darbuotojo procesas. Jei jis yra per mažas, jis turės įtakos lygiagrečiai, jei jis yra per didelis, jis gali sunaudoti per daug išteklių.
Kaip apskaičiuoti tinkamą vertę?
Darant prielaidą, kad turite 4 branduolių procesorių ir 16 GB RAM, saugus pradžios taškas yra worker_connections 4096.
Tačiau jei jūsų svetainėje yra daug srauto, apsvarstykite galimybę padidinti šią vertę iki 8192, kad užtikrintumėte, jog kiekvienas procesas gali apdoroti pakankamai užklausų.
events {
worker_connections 8192;
}
Tokiu būdu „Nginx“ apdorojimo galia bus labai pagerinta.
2. Sureguliuokite keepalive_timeout
Kitas pagrindinis parametras, skirtas Nginx tvarkyti užklausas, yra keepalive_timeout.
Šis parametras nustato, kiek laiko gali būti palaikomas kliento ryšys su serveriu.
Jei nustatytas per ilgai, jis užims per daug ryšio išteklių..
Galite pabandyti keepalive_timeout Norėdami palaikyti ryšį ir atlaisvinti išteklius, nustatykite 15 sekundžių.
keepalive_timeout 15;
3. Optimizuokite failo aprašo ribas
Pagal numatytuosius nustatymusLinux Sistema turi ribotą failų deskriptorių, kuriuos gali atidaryti kiekvienas procesas, skaičių.
Jei „Nginx“ reikia apdoroti daug failų (pvz., statinių išteklių), galite matyti „Nginx“ klaidą, paragindami „too many open files“.
gali praeiti worker_rlimit_nofile Padidinkite failo deskriptoriaus limitą, pavyzdžiui, nustatykite 65535.
worker_rlimit_nofile 65535;
4. Įgalinti talpyklą ir gzip
Talpykla ir glaudinimas yra du pagrindiniai svetainės našumo optimizavimo elementai.
Įjungus Nginx talpyklos funkciją, statiniai ištekliai (pvz., vaizdai ir JS failai) gali būti saugomi atmintyje., taip labai sumažinant serverio apkrovą.
Be to, įjungus gzip glaudinimo funkciją galima sumažinti perduodamų duomenų kiekį ir pagerinti svetainės greitį.
gzip on;
gzip_types text/plain application/javascript;
5. Išanalizuokite „Nginx“ išteklių naudojimą
Galiausiai, jei atlikote visus aukščiau nurodytus optimizavimus, bet „Nginx“ vis tiek užima daug procesoriaus, gali tekti naudoti kai kuriuos įrankius, kad galėtumėte atlikti išsamią analizę.
naudojimas top Arba htop Peržiūrėkite proceso resursų suvartojimą realiuoju laiku, praeiti strace Stebėkite sistemos skambučius arba naudokite nmon Generuokite veiklos ataskaitas. Tik visapusiškai išanalizavę tikrąjį Nginx veikimą galime atlikti tikslesnį derinimą.
apibendrinti
Neišsigąskite, kai „Nginx“ procesoriaus naudojimas smarkiai padidėja. Tai gali būti tiesiog dėl netinkamos konfigūracijos arba per didelio srauto.
pagrįstais koregavimais worker_processes Ir worker_connectionsĮjungę talpyklą, optimizuodami skirtąjį laiką ir failų aprašus, galite žymiai sumažinti Nginx apkrovą.
„Nginx“ yra galingas žiniatinklio serveris, kuris, tinkamai optimizuotas, gali užtikrinti puikų jūsų svetainės našumą.
Atminkite, kad į visus klausimus galite atsakytiMokslasbūdų, kaip ją išspręsti, serverio našumo optimizavimas nėra išimtis.
Stebėkite ir reguliuokite laiku, yra raktas į tai, kad „Nginx“ veiktų efektyviai. Jei sugebėsite įvaldyti šiuos metodus, jūsų svetainė bus saugi net esant dideliam srautui ar kenkėjiškoms atakoms.
Tikiuosi, kad šis straipsnis jus įkvėpė, paskubėkite optimizuoti savo Nginx!
Hope Chen Weiliang tinklaraštis ( https://www.chenweiliang.com/ ) share "Ką daryti, jei Nginx serverio procesoriaus apkrova ir proceso atminties naudojimas yra didelis?" 》, tau naudinga.
Kviečiame pasidalinti šio straipsnio nuoroda:https://www.chenweiliang.com/cwl-32093.html
Norėdami atskleisti daugiau paslėptų triukų🔑, prisijunkite prie mūsų „Telegram“ kanalo!
Dalinkitės ir like jei patiko! Jūsų pasidalinimai ir mygtukai „Patinka“ yra mūsų nuolatinė motyvacija!