Ką daryti, jei „Nginx“ serveris turi didelę procesoriaus apkrovą ir naudoja daug atminties?

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ė

Ką daryti, jei „Nginx“ serveris turi didelę procesoriaus apkrovą ir naudoja daug atminties?

Pirmiausia turime išsiaiškinti, kodėl „Nginx“ staiga „praranda galią“. Šiai problemai yra daug priežasčių, tad nesijaudinkite, panagrinėkime jas kartu.

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 4 Arba nustatykite tiesiai į auto.

2. Padidėja apsilankymų skaičius

Kartais staigus „Nginx“ apkrovos padidėjimas kyla ne dėl operacinių klaidų, o dėl per didelio užklausų kiekio. Didelis lygiagretumas gali perkrauti „Nginx“ darbo procesus , todėl kiekvienas procesas gali dirbti viršydamas savo pajėgumus, eikvodamas procesoriaus ir atminties išteklius. Tokiu atveju gali tekti atnaujinti serverio išteklius, pvz., padidinti procesoriaus branduolių skaičių arba pridėti daugiau atminties. Žinoma, tai taip pat primena: nepamirškite atsižvelgti į CDN srauto paskirstymą arba apkrovos balansavimą.

3. Susidūrė su kenkėjiškomis atakomis

Neįtikėtinas populiarumas internete dar nėra gerai; kenkėjiškos atakos gali jus bet kada užpulti. Jei pastebite neįprastai didelį procesoriaus apkrovimą ir prašomų įtartinų IP adresų, jūsų svetainė greičiausiai yra DDoS atakos auka. Tokiu atveju turite nedelsdami įdiegti užkardą arba apriboti prieigos dažnį , pavyzdžiui, naudodami integruotą „Nginx“ dažnio ribojimo modulį arba sukurdami IP adresų 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

  1. Atidarykite Nginx konfigūracijos failą: Paprastai pagrindinis Nginx konfigūracijos failas yra adresu /etc/nginx/nginx.conf.

  2. Nustatyti worker_processes: rasta konfigūracijos faile events blokai, nustatymai worker_processes vertė. jei ne events bloką, 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.

Per ilgas ilgis gali lemti per didelį ryšio išteklių sunaudojimą.

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 nustatymus „Linux“ sistemos riboja 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 kaupiami talpykloje atmintyje , taip gerokai 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 bet kokią problemą galima išspręsti moksliškai, ir serverio našumo optimizavimas nėra išimtis.

Savalaikis stebėjimas ir koregavimai yra labai svarbūs norint išlaikyti aukštą „Nginx“ efektyvumą. Jei įvaldysite šiuos metodus, jūsų svetainė išliks saugi net ir esant dideliam srautui ar kenkėjiškoms atakoms.

Tikiuosi, kad šis straipsnis jus įkvėpė, paskubėkite optimizuoti savo Nginx!

发表 评论

您的邮箱地址不会被公开.必填项已用*标注

Pereikite į viršų