Čo mám robiť, ak má server Nginx vysoké zaťaženie procesora a využitie pamäte procesu?

Zrazu ste v práci zistili, že využitie procesora Nginx prudko vzrástlo? Aby toho nebolo málo, viaceré pracovné procesy Nginxu spotrebúvajú zdroje ako šialené zakaždým, keď sa na procesy pozriem.

Pri pohľade na túto scénu sa vám rozpáli hlava a nemôžete sa ubrániť výkriku: „Pane bože, vybuchne server Nebojte sa, neznamená to, že váš server bude „hotový“? Nginx Potrebujeme, aby ste urobili komplexnú optimalizáciu!

Analýza príčin nadmerného zaťaženia Nginx

Čo mám robiť, ak má server Nginx vysoké zaťaženie procesora a využitie pamäte procesu?

Najprv musíme prísť na to,Prečo sa Nginx zrazu „vyčerpá“?Existuje mnoho dôvodov pre problém, nebojte sa, poďme na to spoločne nižšie.

1. Nerozumná konfigurácia

V konfiguračnom súbore Nginx je najdôležitejší bod worker_processes. Tento parameter určuje počet procesov spustených Nginxom.

  • Ak nakonfigurujete príliš málo pracovných procesov, zaťaženie procesora sa zvýši, ak ich nakonfigurujete príliš veľa, bude nedostatok pamäte.
  • Musíte nájsť bod rovnováhy, napr.Nastavte worker_processes na 1 až 2-násobok počtu jadier CPU.
  • Ak máte 4 jadrá, skúste worker_processes 4 Alebo ho nastavte priamo na auto.

2. Nárast návštev

Niekedy sa zaťaženie Nginxu náhle zvýši nie preto, že ste urobili chybu, ale preto, že počet návštev je príliš vysoký.Veľmi súbežné požiadavky na prístup spôsobia, že pracovný proces Nginx bude preťažený., každý proces je preťažený a CPU a pamäť sú tiež plné. V súčasnosti možno budete musieť zlepšiť zdroje servera, napríklad zvýšiť počet jadier CPU alebo zvýšiť pamäť. Samozrejme, toto je tiež pripomenutie: nezabudnite zvážiť zníženie zaťaženia CDN alebo vyrovnávanie zaťaženia.

3. Stretli sa so škodlivými útokmi

Byť „veľmi populárny“ na internete nie je vždy dobré. Ak zistíte, že využitie procesora je abnormálne vysoké a zdroj IP žiadosti je podozrivý, je veľmi pravdepodobné, že váš web trpí DDoS útokom. v tomto časeOkamžite musíte nasadiť firewall alebo obmedziť frekvenciu prístupu, ako je napríklad použitie aktuálneho obmedzujúceho modulu, ktorý sa dodáva s Nginx, alebo nastavenie čiernej listiny IP.

Ako vyriešiť problém vysokého využitia pamäte procesom Nginx?

Otázkou teda je, prečo pracovný proces Nginx zaberá toľko zdrojov? Musíme začať s konfiguráciou a krok za krokom ju optimalizovať.

Spôsob konfigurácie

  1. Otvorte konfiguračný súbor Nginx: Zvyčajne sa hlavný konfiguračný súbor Nginx nachádza na adrese /etc/nginx/nginx.conf.

  2. Nastaviť worker_processes: Nachádza sa v konfiguračnom súbore events bloky, nastavenia worker_processes hodnotu. ak nie events blok, musíte si ho vytvoriť.

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

1. Správne nastavené worker_connections

nginx worker_connections Parameter určuje maximálny počet pripojení, ktoré môže spracovať každý pracovný proces. Ak je príliš malý, ovplyvní výkon súbežnosti, ak je príliš veľký, môže spotrebovať príliš veľa zdrojov.

Ako vypočítať vhodnú hodnotu?

Za predpokladu, že máte 4-jadrový procesor a 16 GB RAM, je to bezpečný východiskový bod worker_connections 4096.

Ak má však vaša webová lokalita veľkú návštevnosť, zvážte zvýšenie tejto hodnoty na 8192, aby ste zabezpečili, že každý proces dokáže spracovať dostatok požiadaviek.

events {
    worker_connections 8192;
}

Týmto spôsobom sa výrazne zlepší výpočtový výkon Nginx.

2. Upravte keepalive_timeout

Ďalším kľúčovým parametrom pre Nginx na spracovanie požiadaviek je keepalive_timeout.

Toto nastavenie určuje, ako dlho môže byť udržiavané pripojenie klienta k serveru.

Ak je nastavený príliš dlho, zaberie príliš veľa prostriedkov pripojenia..

Môžete sa o to pokúsiť keepalive_timeout Ak chcete zachovať pripojenie a uvoľniť prostriedky, nastavte na 15 sekúnd.

keepalive_timeout 15;

3. Optimalizujte limity deskriptorov súborov

V predvolenom nastaveníLinux Systém má limit na počet deskriptorov súborov, ktoré môže každý proces otvoriť.

Ak Nginx potrebuje spracovať veľké množstvo súborov (napríklad statické zdroje), môže sa vám zobraziť chyba od Nginx s výzvou „too many open files".

môžete prejsť worker_rlimit_nofile Zvýšte limit deskriptorov súboru, napríklad nastavený na 65535.

worker_rlimit_nofile 65535;

4. Povoliť ukladanie do vyrovnávacej pamäte a gzip

Ukladanie do vyrovnávacej pamäte a kompresia sú dva kľúče k optimalizácii výkonu webových stránok.

Povolením funkcie ukladania do vyrovnávacej pamäte Nginx je možné ukladať statické zdroje (ako sú obrázky a súbory JS) do vyrovnávacej pamäte, čím sa výrazne zníži zaťaženie servera.

Okrem toho zapnutie funkcie kompresie gzip môže znížiť množstvo prenášaných údajov a zvýšiť rýchlosť webovej stránky.

gzip on;
gzip_types text/plain application/javascript;

5. Analyzujte využitie zdrojov Nginx

Nakoniec, ak ste dokončili všetky vyššie uvedené optimalizácie, ale Nginx stále zaberá veľa CPU, možno budete musieť použiť nejaké nástroje na hĺbkovú analýzu.

使用 top alebo htop Pozrite si spotrebu zdrojov procesu v reálnom čase,prejsť strace Sledujte systémové volania alebo použite nmon Vytvorte správy o výkonnosti. Iba komplexnou analýzou skutočnej prevádzky Nginx môžeme vykonať presnejšie ladenie.

总结

Neprepadajte panike, keď využitie procesora Nginx stúpne. Môže to byť spôsobené nesprávnou konfiguráciou alebo nadmernou premávkou.

prostredníctvom primeraných úprav worker_processes A worker_connectionsPovolením ukladania do vyrovnávacej pamäte, optimalizáciou časových limitov a deskriptorov súborov môžete výrazne znížiť záťažový tlak na Nginx.

Nginx je výkonný webový server, ktorý pri správnej optimalizácii môže poskytnúť vynikajúci výkon pre váš web.

Pamätajte, že akékoľvek otázky môžu byť zodpovedanévedaoptimalizácia výkonu servera nie je výnimkou.

Monitorujte a upravujte včas, je kľúčom k efektívnemu chodu Nginxu. Ak zvládnete tieto techniky, vaša webová stránka bude bezpečná aj pri vysokej návštevnosti alebo škodlivých útokoch.

Dúfam, že vás tento článok inšpiroval, poponáhľajte sa a optimalizujte svoj Nginx!

发表 评论

Vaša emailová adresa nebude zverejnená. 必填 项 已 用 * Štítok

Prejdite na začiatok