Kaj naj storim, če ima strežnik Nginx visoko obremenitev procesorja in porabo pomnilnika procesa?

Ste na delovnem mestu nenadoma odkrili, da je poraba procesorja Nginx skokovito narasla? Da bi bile stvari še hujše, Nginxovi več delovni procesi porabljajo vire kot nori vsakič, ko pogledam procese.

Ko vidiš ta prizor, ti postane vroče v glavi in ​​ne moreš si pomagati, da bi zavpil: "O moj bog, ali bo strežnik eksplodiral?" Ne skrbite, to ne pomeni, da bo vaš strežnik "končan", ampak Nginx Potrebujemo vas za celovito optimizacijo!

Analiza vzrokov za prekomerno obremenitev Nginx

Kaj naj storim, če ima strežnik Nginx visoko obremenitev procesorja in porabo pomnilnika procesa?

Najprej moramo ugotoviti,Zakaj Nginx nenadoma postane "izčrpan"?Razlogov za težavo je veliko, ne bojte se, ugotovimo jih skupaj spodaj.

1. Nerazumna konfiguracija

V konfiguracijski datoteki Nginx je najpomembnejša točka worker_processes. Ta parameter določa število procesov, ki jih je zagnal Nginx.

  • Če konfigurirate premalo delovnih procesov, se bo obremenitev procesorja povečala; če jih konfigurirate preveč, ne bo dovolj pomnilnika.
  • Najti moraš ravnovesje, npr.Worker_processes nastavite na 1 do 2-kratno število jeder CPU.
  • Če imate 4 jedra, poskusite worker_processes 4 Ali pa ga nastavite neposredno na auto.

2. Obisk narašča

Včasih se obremenitev Nginxa nenadoma poveča, ne zato, ker ste naredili napako, ampak zato, ker je število obiskov previsoko.Zelo sočasne zahteve za dostop bodo povzročile preobremenitev delovnega procesa Nginx., je vsak proces preobremenjen, CPE in pomnilnik pa sta tudi polna. Trenutno boste morda morali izboljšati vire strežnika, na primer povečati število jeder CPU ali povečati pomnilnik. Seveda je to tudi opomnik: ne pozabite razmisliti o razbremenitvi CDN ali uravnoteženju obremenitve.

3. Naletel na zlonamerne napade

Biti "zelo priljubljen" na internetu ni vedno dobra stvar. Zlonamerni napadi se lahko kadar koli usmerijo na vas. Če ugotovite, da je obremenitev procesorja nenormalno visoka in je vir IP zahteve sumljiv, je zelo verjetno, da je vaše spletno mesto izpostavljeno napadu DDoS. v tem času,Takoj morate namestiti požarni zid ali omejiti frekvenco dostopa, kot je uporaba trenutnega omejevalnega modula, ki je priložen Nginxu, ali nastavitev črnega seznama IP.

Kako rešiti problem velike porabe pomnilnika procesa Nginx?

Vprašanje je torej, zakaj delovni proces Nginx zavzame toliko virov? Začeti moramo s konfiguracijo in jo korak za korakom optimizirati.

Metoda konfiguracije

  1. Odprite konfiguracijsko datoteko Nginx: Običajno se glavna konfiguracijska datoteka Nginx nahaja na /etc/nginx/nginx.conf.

  2. Nastaviti worker_processes: Najdeno v konfiguracijski datoteki events bloki, nastavitve worker_processes vrednost. če ne events blok, ga morate ustvariti.

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

1. Pravilno nastavite worker_connections

nginx worker_connections Parameter določa največje število povezav, ki jih lahko obravnava vsak delovni proces. Če je premajhen, bo vplival na zmogljivost sočasnosti; če je prevelik, bo morda porabil preveč virov.

Kako izračunati ustrezno vrednost?

Ob predpostavki, da imate 4-jedrni CPE in 16 GB RAM-a, je varno izhodišče worker_connections 4096.

Če pa ima vaše spletno mesto veliko prometa, razmislite o povečanju te vrednosti na 8192, da zagotovite, da lahko vsak proces obravnava dovolj zahtev.

events {
    worker_connections 8192;
}

Na ta način bo procesorska moč Nginxa močno izboljšana.

2. Prilagodite keepalive_timeout

Drugi ključni parameter za Nginx za obravnavanje zahtev je keepalive_timeout.

Ta nastavitev določa, kako dolgo se lahko vzdržuje odjemalčeva povezava s strežnikom.

Če je nastavljeno predolgo, bo zavzelo preveč virov povezave..

Lahko poskusite keepalive_timeout Nastavite na 15 sekund za vzdrževanje povezave in sprostitev virov.

keepalive_timeout 15;

3. Optimizirajte omejitve deskriptorjev datotek

PrivzetoLinux Sistem ima omejitev števila deskriptorjev datotek, ki jih lahko odpre vsak proces.

Če mora Nginx obdelati veliko število datotek (kot so statični viri), boste morda videli napako Nginxa s pozivom "too many open files".

Lahko greš worker_rlimit_nofile Povečajte omejitev deskriptorja datoteke, na primer nastavljen na 65535.

worker_rlimit_nofile 65535;

4. Omogoči predpomnjenje in gzip

Predpomnjenje in stiskanje sta dva ključa za optimizacijo delovanja spletnega mesta.

Če omogočite Nginxovo funkcijo predpomnjenja, lahko statične vire (kot so slike in datoteke JS) predpomnite v pomnilnik, s čimer se močno zmanjša obremenitev strežnika.

Poleg tega lahko vklop funkcije stiskanja gzip zmanjša količino prenesenih podatkov in izboljša hitrost spletnega mesta.

gzip on;
gzip_types text/plain application/javascript;

5. Analizirajte uporabo virov Nginx

Nazadnje, če ste izvedli vse zgornje optimizacije, vendar Nginx še vedno zavzema veliko procesorja, boste morda morali uporabiti nekaj orodij za poglobljeno analizo.

uporaba tophtop Oglejte si porabo virov procesa v realnem času, avtor strace Sledite sistemskim klicem ali uporabite nmon Ustvarite poročila o uspešnosti. Šele s celovito analizo dejanskega delovanja Nginxa lahko izvedemo natančnejšo nastavitev.

总结

Brez panike, ko poraba procesorja Nginx skokovito naraste. Lahko je samo posledica neustrezne konfiguracije ali prevelikega prometa.

z razumnimi prilagoditvami worker_processes In worker_connectionsČe omogočite predpomnjenje, optimizirate časovne omejitve in deskriptorje datotek, lahko občutno zmanjšate pritisk na Nginx.

Nginx je zmogljiv spletni strežnik, ki lahko ob pravilni optimizaciji zagotovi odlično delovanje vašega spletnega mesta.

Ne pozabite, da lahko na vsa vprašanja odgovoriZnanostmetode za njegovo rešitev, optimizacija delovanja strežnika ni izjema.

Spremljajte in pravočasno prilagajajte, je ključnega pomena za učinkovito delovanje Nginxa. Če obvladate te tehnike, bo vaše spletno mesto varno tudi ob velikem prometu ali zlonamernih napadih.

Upam, da vas je ta članek navdihnil, pohitite in optimizirajte svoj Nginx!

发表 评论

您的邮箱地址不会被公开。 必填 项 已 用 * Oznaka

Pomaknite se na vrh