Vad ska jag göra om Nginx-servern har hög CPU-belastning och processminneanvändning?

Har du plötsligt upptäckt på jobbet att Nginx CPU-användning har skjutit i höjden? För att göra saken värre, konsumerar Nginx flera arbetsprocesser resurser som en galning varje gång jag tittar på processerna.

När du ser den här scenen blir ditt huvud varmt och du kan inte låta bli att ropa: "Herregud, kommer servern att explodera, det betyder inte att din server kommer att bli "färdig?" men Nginx Vi behöver dig för att göra en omfattande optimering!

Analys av orsakerna till överdriven Nginx-belastning

Vad ska jag göra om Nginx-servern har hög CPU-belastning och processminneanvändning?

Först måste vi ta reda påVarför blir Nginx plötsligt "utmattad"?Det finns många orsaker till problemet, var inte rädd, låt oss ta reda på det tillsammans nedan.

1. Orimlig konfiguration

I Nginx-konfigurationsfilen är den viktigaste punkten worker_processes. Denna parameter bestämmer antalet processer som startas av Nginx.

  • Om du konfigurerar för få arbetsprocesser kommer CPU-belastningen att skjuta i höjden om du konfigurerar för många, kommer det att finnas otillräckligt minne.
  • Du måste hitta en balanspunkt, t.ex.Ställ in worker_processes till 1 till 2 gånger antalet CPU-kärnor.
  • Om du har 4 kärnor så försök worker_processes 4 Eller ställ in den direkt till auto.

2. Besöken ökar

Ibland ökar Nginx belastning plötsligt inte för att du gjorde ett misstag, utan för att antalet besök är för högt.Mycket samtidiga åtkomstförfrågningar kommer att göra att Nginx-arbetarprocessen blir överväldigad., varje process är överbelastad, och CPU och minne är också fulla. För närvarande kan du behöva förbättra serverresurserna, som att öka antalet CPU-kärnor eller öka minnet. Naturligtvis är detta också en påminnelse: glöm inte att överväga CDN-avlastning eller lastbalansering.

3. Stötte på skadliga attacker

Att vara "mycket populär" på Internet är inte alltid bra. Skadliga attacker kan riktas mot dig när som helst. Om du upptäcker att CPU-användningen är onormalt hög och källan till IP-begäran är misstänkt, är det mycket troligt att din webbplats lider av en DDoS-attack. Vid den här tiden,Du måste distribuera en brandvägg eller begränsa åtkomstfrekvensen omedelbart, till exempel att använda den aktuella begränsningsmodulen som följer med Nginx, eller ställa in en IP-svartlista.

Hur löser man problemet med hög minnesanvändning av Nginx-processen?

Så frågan är, varför tar Nginx-arbetarprocessen upp så många resurser? Vi måste börja med konfigurationen och optimera den steg för steg.

Konfigurationsmetod

  1. Öppna Nginx-konfigurationsfilen: Vanligtvis finns huvudkonfigurationsfilen för Nginx på /etc/nginx/nginx.conf.

  2. Uppstart worker_processes: Hittas i konfigurationsfilen events block, inställningar worker_processes värde. om inte events block, måste du skapa en.

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

1. Ange worker_connections korrekt

nginx worker_connections Parametern bestämmer det maximala antalet anslutningar som varje arbetsprocess kan hantera. Om den är för liten kommer den att påverka samtidighetsprestandan om den är för stor, kan den förbruka för många resurser.

Hur beräknar man lämpligt värde?

Förutsatt att du har en 4-kärnig CPU och 16 GB RAM, är en säker utgångspunkt worker_connections 4096.

Men om din webbplats har mycket trafik, överväg att öka detta värde till 8192 för att säkerställa att varje process kan hantera tillräckligt många förfrågningar.

events {
    worker_connections 8192;
}

På så sätt kommer Nginx processorkraft att förbättras avsevärt.

2. Justera keepalive_timeout

En annan nyckelparameter för Nginx att hantera förfrågningar är keepalive_timeout.

Den här inställningen bestämmer hur länge klientens anslutning till servern kan bibehållas.

Om den är inställd för lång kommer den att uppta för många anslutningsresurser..

Du kan försöka keepalive_timeout Ställ in på 15 sekunder för att upprätthålla anslutningen och frigöra resurser.

keepalive_timeout 15;

3. Optimera filbeskrivningsgränser

Som standard,Linux Systemet har en gräns för antalet filbeskrivningar som kan öppnas av varje process.

Om Nginx behöver bearbeta ett stort antal filer (som statiska resurser) kan du se ett felmeddelande från Nginx som uppmanar "too many open files".

du kan passera worker_rlimit_nofile Öka filbeskrivningsgränsen, till exempel inställd på 65535.

worker_rlimit_nofile 65535;

4. Aktivera cachning och gzip

Cachning och komprimering är två nycklar för att optimera webbplatsens prestanda.

Genom att aktivera Nginxs cachningsfunktion kan statiska resurser (som bilder och JS-filer) cachas i minnet, vilket avsevärt minskar belastningen på servern.

Om du aktiverar gzip-komprimeringsfunktionen kan dessutom minska mängden data som överförs och förbättra webbplatsens hastighet.

gzip on;
gzip_types text/plain application/javascript;

5. Analysera Nginx resursanvändning

Slutligen, om du har slutfört alla ovanstående optimeringar men Nginx fortfarande tar upp mycket CPU, kan du behöva använda några verktyg för djupgående analys.

användning top eller htop Se en processs resursförbrukning i realtid,passera strace Spåra systemsamtal, eller använd nmon Skapa resultatrapporter. Endast genom att heltäckande analysera den faktiska driften av Nginx kan vi utföra mer exakt inställning.

总结

Få inte panik när Nginx CPU-användning ökar. Det kan bara bero på felaktig konfiguration eller överdriven trafik.

genom rimliga justeringar worker_processesworker_connectionsGenom att aktivera cachning, optimera timeouts och filbeskrivningar kan du avsevärt minska belastningstrycket på Nginx.

Nginx är en kraftfull webbserver som, när den är korrekt optimerad, kan ge utmärkt prestanda för din webbplats.

Kom ihåg att alla frågor kan besvaras avSciencemetoder för att lösa det, är optimering av serverprestanda inget undantag.

Övervaka och justera i tid, är nyckeln till att hålla Nginx igång effektivt. Om du kan behärska dessa tekniker kommer din webbplats att vara säker även vid hög trafik eller skadliga attacker.

Jag hoppas att den här artikeln har inspirerat dig, skynda dig och optimera din Nginx!

发表 评论

Din e-postadress kommer inte att publiceras. 必填 项 已 用 * 标注

Bläddra till början