Hva skal jeg gjøre hvis Nginx-serveren har høy CPU-belastning og prosessminnebruk?

Har du plutselig oppdaget på jobben at Nginx sin CPU-bruk har skutt i været? For å gjøre vondt verre, bruker Nginx sine flere arbeidsprosesser ressurser som en gal hver gang jeg ser på prosessene.

Når du ser denne scenen, blir hodet ditt varmt, og du kan ikke la være å rope: "Herregud, kommer serveren til å eksplodere, ikke bekymre deg, dette betyr ikke at serveren din kommer til å bli "ferdig?" men Nginx Vi trenger at du gjør en omfattende optimalisering!

Analyse av årsakene til overdreven Nginx-belastning

Hva skal jeg gjøre hvis Nginx-serveren har høy CPU-belastning og prosessminnebruk?

Først må vi finne utHvorfor blir Nginx plutselig "utmattet"?Det er mange årsaker til problemet, ikke vær redd, la oss finne ut sammen nedenfor.

1. Urimelig konfigurasjon

I Nginx-konfigurasjonsfilen er det viktigste punktet worker_processes. Denne parameteren bestemmer antall prosesser startet av Nginx.

  • Hvis du konfigurerer for få arbeidsprosesser, vil CPU-belastningen stige hvis du konfigurerer for mange, vil det være utilstrekkelig minne.
  • Du må finne et balansepunkt, for eksempelSett worker_processes til 1 til 2 ganger antall CPU-kjerner.
  • Hvis du har 4 kjerner så prøv worker_processes 4 Eller sett den direkte til auto.

2. Besøkene øker

Noen ganger øker belastningen til Nginx plutselig, ikke fordi du har gjort en feil, men fordi antallet besøk er for høyt.Svært samtidige tilgangsforespørsler vil føre til at Nginx-arbeidsprosessen blir overveldet., hver prosess er overbelastet, og CPU og minne er også fulle. På dette tidspunktet må du kanskje forbedre serverressurser, for eksempel å øke antall CPU-kjerner eller øke minnet. Selvfølgelig er dette også en påminnelse: ikke glem å vurdere CDN-avlasting eller lastbalansering.

3. Oppdaget ondsinnede angrep

Å være "veldig populær" på Internett er ikke alltid en god ting Ondsinnede angrep kan være rettet mot deg når som helst. Hvis du finner ut at CPU-bruken er unormalt høy og kilden til IP-forespørselen er mistenkelig, er det svært sannsynlig at nettstedet ditt lider av et DDoS-angrep. På dette tidspunktetDu må distribuere en brannmur eller begrense tilgangsfrekvensen umiddelbart, for eksempel å bruke den gjeldende begrensningsmodulen som følger med Nginx, eller sette opp en IP-svarteliste.

Hvordan løse problemet med høy minnebruk av Nginx-prosessen?

Så spørsmålet er, hvorfor tar Nginx-arbeiderprosessen så mange ressurser? Vi må starte med konfigurasjonen og optimalisere den steg for steg.

Konfigurasjonsmetode

  1. Åpne Nginx-konfigurasjonsfilen: Vanligvis er hovedkonfigurasjonsfilen til Nginx plassert på /etc/nginx/nginx.conf.

  2. Sett opp worker_processes: Finnes i konfigurasjonsfilen events blokker, innstillinger worker_processes verdi. hvis ikke events blokk, må du opprette en.

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

1. Angi worker_connections riktig

nginx worker_connections Parameteren bestemmer det maksimale antallet tilkoblinger som hver arbeidsprosess kan håndtere. Hvis det er for lite, vil det påvirke samtidig ytelse; hvis det er for stort, kan det forbruke for mange ressurser.

Hvordan beregne riktig verdi?

Forutsatt at du har en 4-kjerners CPU og 16 GB RAM, er et trygt utgangspunkt worker_connections 4096.

Men hvis nettstedet ditt har mye trafikk, bør du vurdere å øke denne verdien til 8192 for å sikre at hver prosess kan håndtere nok forespørsler.

events {
    worker_connections 8192;
}

På denne måten vil Nginx sin prosessorkraft bli kraftig forbedret.

2. Juster keepalive_timeout

En annen nøkkelparameter for Nginx for å håndtere forespørsler er keepalive_timeout.

Denne innstillingen bestemmer hvor lenge klientens tilkobling til serveren kan opprettholdes.

Hvis den er satt for lang, vil den oppta for mange tilkoblingsressurser..

Du kan prøve å keepalive_timeout Sett til 15 sekunder for å opprettholde tilkoblingen og frigjøre ressurser.

keepalive_timeout 15;

3. Optimaliser grenser for filbeskrivelser

som standard,Linux Systemet har en grense på antall filbeskrivelser som kan åpnes av hver prosess.

Hvis Nginx trenger å behandle et stort antall filer (som statiske ressurser), kan du se en feilmelding fra Nginx som ber "too many open files".

du kan passere worker_rlimit_nofile Øk filbeskrivelsesgrensen, for eksempel satt til 65535.

worker_rlimit_nofile 65535;

4. Aktiver caching og gzip

Bufring og komprimering er to nøkler til optimalisering av nettstedets ytelse.

Ved å aktivere Nginx sin hurtigbufferfunksjon, kan statiske ressurser (som bilder og JS-filer) bufres i minnet, og reduserer dermed belastningen på serveren betraktelig.

I tillegg kan det å slå på gzip-komprimeringsfunksjonen redusere mengden data som overføres og forbedre nettstedets hastighet.

gzip on;
gzip_types text/plain application/javascript;

5. Analyser Nginx ressursbruk

Til slutt, hvis du har fullført alle de ovennevnte optimaliseringene, men Nginx fortsatt tar opp mye CPU, kan det hende du må bruke noen verktøy for dybdeanalyse.

使用 top eller htop Se ressursforbruket til en prosess i sanntid,sende strace Spor systemanrop, eller bruk nmon Generer resultatrapporter. Bare ved å analysere den faktiske driften av Nginx grundig kan vi utføre mer presis tuning.

oppsummering

Ikke få panikk når Nginx sin CPU-bruk øker. Det kan bare være forårsaket av feil konfigurasjon eller overdreven trafikk.

gjennom rimelige justeringer worker_processes Og worker_connectionsVed å aktivere hurtigbufring, optimalisere tidsavbrudd og filbeskrivelser, kan du redusere belastningstrykket på Nginx betydelig.

Nginx er en kraftig nettserver som, når den er riktig optimalisert, kan gi utmerket ytelse for nettstedet ditt.

Husk at alle spørsmål kan besvares avvitenskapmetoder for å løse det, optimalisering av serverytelse er intet unntak.

Overvåk og juster i tide, er nøkkelen til å holde Nginx i gang effektivt. Hvis du kan mestre disse teknikkene, vil nettstedet ditt være trygt selv i møte med høy trafikk eller ondsinnede angrep.

Jeg håper denne artikkelen har inspirert deg, skynd deg og optimer din Nginx!

发表 评论

E-postadressen din vil ikke bli publisert. 必填 项 已 用 * Merkelapp

Rull til toppen