GNU/Linux >> Znalost Linux >  >> Linux

Ladění výkonu Nginx

Nginx je bezplatný open-source webový server s vysokým výkonem a nízkou hmotností, který se používá jako vyrovnávání zatížení, reverzní proxy, HTTP cache a mail proxy. Přestože je Nginx ve srovnání s jinými webovými servery zcela nový, jeho popularita roste díky vysokému výkonu. S výchozí konfigurací Nginx můžete získat rychlý výkon, ale můžeme výkon Nginx ještě zvýšit změnou některých konfigurací.

V tomto článku se dozvíte 8 různých způsobů, jak zlepšit výkon Nginx. Pro ilustraci příkladu v tomto článku jsem nainstaloval Nginx na systém Ubuntu 22.04 LTS.

Upravit pracovní procesy

Všechny požadavky webového serveru v Nginx jsou zpracovávány pracovním procesem. V Nginx jsou pracovní procesy vytvořeny jako více pracovních procesů pro zpracování požadavku a hlavní proces je zodpovědný za správu všech pracovních procesů a analýzu konfigurace. Ve výchozí konfiguraci Nginx je parametr pracovního procesu nastaven na auto, což spouští pracovní proces v závislosti na dostupném jádru CPU. Jak je doporučeno v oficiálních dokumentech Nginx, je to nejlepší způsob, jak udržet pracovní proces podle dostupného jádra CPU, takže auto je doporučený parametr. Pokud chcete vědět, kolik jader mají vaše procesory, spusťte následující příkaz.

$ grep processor /proc/cpuinfo | wc -l

Výchozí hodnotu pracovního procesu můžete změnit v konfiguračním souboru Nginx, který se nachází na adrese /etc/nginx/nginx.conf. Pokud váš server zažívá vyšší provoz a potřebujete přidat více pracovních procesů, je lepší upgradovat server na více jádrových procesorů.

Zvýšení limitu počtu pracovních připojení

Pracovní připojení je celkový počet současných připojení, které může každý dostupný pracovní proces spravovat. Ve výchozím nastavení může pracovní proces spravovat 512 připojení najednou. Před úpravou hodnoty pracovního připojení musíte zkontrolovat systém maximálního připojení, aby bylo možné pomocí následujícího příkazu aktualizovat konfiguraci připojení podle něj.

$ ulimit -n

Chcete-li vylepšit Nginx na jeho plný potenciál, nastavte v souboru nginx.conf hodnotu připojení pracovníka na maximální systém připojení, který systém umožňuje.

Implementace komprese obsahu

Pro kompresi webového obsahu používá Nginx gzip ke zvýšení doby doručení obsahu a snížení využití šířky pásma sítě. V konfiguraci můžete najít konfiguraci gzip v komentovaném stavu, ale můžete odkomentovat a upravit gzip podle svých potřeb. Protože proces komprese gzip využívá systémové prostředky, pokud máte omezené prostředky, upravte konfiguraci podle toho, jako je komprimace pouze určitého typu souboru, úroveň komprese atd.

Ukládání statického obsahu do mezipaměti

V tomto moderním vývoji webu je většina obsahu staticky předávána prohlížeči nebo klientovi, takže ukládání statických souborů do mezipaměti načte obsah rychleji. Při načítání obsahu z mezipaměti také sníží požadavek na připojení k Nginx. Chcete-li spustit proces ukládání do mezipaměti, přidejte do konfiguračního souboru virtuálního hostitele Nginx následující direktivu.

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}

Výše uvedená směrnice ukládá zdrojový soubor do mezipaměti po dobu 30 dnů. Datum vypršení platnosti mezipaměti můžete nastavit podle svých potřeb.

Načítání do vyrovnávací paměti

Ukládání do vyrovnávací paměti může zefektivnit komunikaci mezi klientem a serverem, protože obsahuje část odpovědi, dokud se vyrovnávací paměť nezaplní. Pokud je odpověď příliš vysoká než skutečná velikost vyrovnávací paměti, Nginx zapíše odpověď na disk, což může vést k problému s výkonem. Můžete aktualizovat následující direktivu a upravit velikost vyrovnávací paměti podle vašich požadavků.

Client_body_buffer_size :Určuje skutečnou velikost vyrovnávací paměti, která se používá k uložení dat odezvy klienta.

Client_header_buffer_size :Spravuje velikost hlavičky klienta. Normálně stačí nastavit hodnotu na 1k.

Client_max_body_size :Omezuje maximální odezvu těla povolenou klientovi. Pokud velikost těla překročí svou hodnotu, Nginx vyvolá chybu „Požadavek je příliš velký“.

Chcete-li upravit velikost ukládání do vyrovnávací paměti, přidejte do sekce http následující direktivu.

http {
…
client_body_buffer_size 80k;
client_max_body_size 9m;
client_header_buffer_size 1k;
...
}

Přístup k ukládání do vyrovnávací paměti

Protokolování je jednou z klíčových rolí při ladění problému a auditování. Protože protokolování ukládá všechna data požadavku, která ovlivňují jak I/O cykly, tak CPU, což má za následek problémy s výkonem. Tento druh dopadu můžete omezit povolením ukládání do vyrovnávací paměti protokolu. Jakmile velikost vyrovnávací paměti dosáhne svého limitu, Nginx zapíše obsah vyrovnávací paměti do protokolu. Ukládání do vyrovnávací paměti můžete povolit přidáním parametrů vyrovnávací paměti s hodnotami velikosti do direktivy protokolu přístupu.

access_log /var/log/nginx/access.log main buffer=16k;

Nebo můžete zakázat přístupový protokol (pokud není potřeba) následujícím způsobem.

access_log off;

Omezení hodnot časového limitu

Omezení hodnoty časového limitu zvýší výkon Nginx. Nginx bude čekat na žádost o tělo a hlavičku klienta po dané časové období. Pokud neobdrží data odezvy včas, Nginx spustí časový limit pro příslušného klienta. Hodnotu časového limitu lze spravovat pomocí následující směrnice. Chcete-li nastavit dobu trvání časového limitu, zkopírujte a vložte direktivu uvedenou níže v části http.

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 13;
send_timeout 10;

Časový limit těla a hlavičky klienta je časový úsek, za který Nginx přečte hlavičku a tělo z požadavku klienta. Pokud není včas dokončen, je požadavek ukončen s chybou časového limitu. Keepalive_timeout je doba, po které nginx zavře připojení klienta keepalive připojení zůstane otevřené. Send_timeout je doba, po kterou musí klient obdržet odpověď zaslanou Nginxem.

Otevřít mezipaměť souborů

V Linuxu je téměř vše soubor, při použití open_file_cache se deskriptor souboru a všechny často používané soubory ukládají do mezipaměti serveru. Zejména při poskytování statických souborů Html pomocí otevřené mezipaměti souborů se zvýší výkon Nginx, protože se otevírá a ukládá mezipaměť do paměti po daný interval. Vložte následující direktivu open_file_cache do sekce http pro zahájení ukládání do mezipaměti.

http {
...
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

Závěr

Toto je osm způsobů, jak zvýšit výkon webového serveru Nginx jednoduchou úpravou konfiguračního souboru Nginx. Doufám, že vám přečtení tohoto článku pomůže vylepšit nastavení Ngunx, abyste dosáhli co nejvyššího výkonu na vašem serveru, serveru nebo cloudovém systému.


Linux
  1. Proč se vzor Awk neshoduje s argumenty konfigurace Nginx -v?

  2. Nainstalujte Nginx na Fedoru

  3. Nainstalujte Nginx na Ubuntu

  1. MySQL – ladění a optimalizace výkonu

  2. dd výkon na Mac OS X vs. Linux

  3. getpwnam(www) se nezdařilo v /etc/nginx/nginx.conf

  1. nginx - 413 entita požadavku je příliš velká

  2. Základní řešení problémů s Nginx

  3. Možnosti ladění výkonu souborového systému pro ext3