Můžete vyladit téměř jakékoli nastavení, ale tento příspěvek se soustředí na několik nastavení, u kterých je vyladění přínosem pro většinu uživatelů. Existují nastavení, která vám doporučujeme změnit, pouze pokud máte hluboké znalosti o NGINX a Linuxu. Takže budete vědět, jak získat nejlepší výkon ze serveru Nginx
Ahoj kluci!, V tomto příspěvku v podstatě vidíme ladění NGINX pomocí jeho konfiguračního souboru, který se nachází na adrese /etc/nginx/nginx.conf
NGINX je dobře známý jako vysoce výkonný nástroj pro vyrovnávání zatížení, mezipaměť a webový server, který pohání více než 40 % nejrušnějších webových stránek na světě. Ve většině případů použití výchozí nastavení NGINX a Linuxu fungují dobře, ale dosažení optimálního výkonu někdy vyžaduje trochu ladění. Tento příspěvek na blogu pojednává o některých nastaveních NGINX a Linuxu, která je třeba vzít v úvahu při ladění systému.
Pracovní procesy
NGINX může spouštět více pracovních procesů, z nichž každý je schopen zpracovat velké množství současných připojení. Počet pracovních procesů a způsob, jakým zpracovávají připojení, můžete ovládat pomocí následujících direktiv
pracovní_procesy
Počet pracovních procesů NGINX (výchozí hodnota je 1). Ve většině případů běh jednoho pracovního procesu na jádro CPU funguje dobře a k dosažení tohoto cíle doporučujeme nastavit tuto direktivu na auto. Někdy můžete chtít toto číslo zvýšit, například když pracovní procesy musí provádět velké množství diskových I/O.
worker_connections
Maximální počet připojení, které může každý pracovní proces zpracovat současně. Výchozí hodnota je 512, ale většina systémů má dostatek prostředků na podporu většího počtu. Vhodné nastavení závisí na velikosti serveru a povaze provozu a lze jej zjistit pomocí testování.
Zachovat připojení
Keepalive Connections může mít velký dopad na výkon snížením zátěže CPU a sítě potřebné k otevírání a uzavírání připojení. NGINX ukončí všechna připojení klientů a vytvoří samostatná a nezávislá připojení k upstream serverům. NGINX podporuje udržování provozu pro klienty i upstream servery. Následující direktivy se týkají udržování klienta:
keepalive_requests
Počet požadavků, které může klient provést prostřednictvím jednoho udržovacího připojení. Výchozí hodnota je 100, ale mnohem vyšší hodnota může být užitečná zejména pro testování pomocí nástroje pro generování zátěže, který obecně odesílá velké množství požadavků od jednoho klienta.
keepalive_timeout
Jak dlouho zůstane otevřené nečinné keepalive připojení.
Následující směrnice se týká upstream keepalives
udržovat
Počet nečinných udržovacích připojení k nadřazenému serveru, která zůstávají otevřená pro každý pracovní proces. Neexistuje žádná výchozí hodnota.
Chcete-li povolit udržovací připojení k upstream serverům, musíte do konfigurace zahrnout také následující direktivy:
Protokolování přístupu
Protokolování každého požadavku spotřebovává cykly CPU i I/O a jedním ze způsobů, jak snížit dopad, je povolit ukládání do vyrovnávací paměti protokolu přístupu. Díky ukládání do vyrovnávací paměti, namísto provádění samostatné operace zápisu pro každý záznam protokolu, NGINX ukládá do vyrovnávací paměti řadu záznamů a zapisuje je do souboru společně v jediné operaci.
Položky protokolu se také zapisují, když pracovní proces znovu otevírá soubory protokolu nebo se vypíná. Chcete-li protokolování přístupu úplně zakázat, zahrňte parametr off do direktivy access_log.
Odeslat soubor
Systémové volání sendfile() operačního systému kopíruje data z jednoho deskriptoru souboru do druhého, přičemž často dosahuje nulové kopie, což může urychlit přenosy dat TCP. Chcete-li umožnit NGINX používat jej, zahrňte direktivu sendfile do kontextu http nebo serveru či umístění. NGINX pak může zapisovat obsah z mezipaměti nebo na disk do soketu bez jakéhokoli přepínání kontextu do uživatelského prostoru, díky čemuž je zápis extrémně rychlý a spotřebovává méně cyklů CPU. Všimněte si však, že protože data zkopírovaná pomocí sendfile() obcházejí uživatelský prostor, nepodléhají běžnému řetězci zpracování NGINX a filtrům, které mění obsah, jako je gzip. Když kontext konfigurace obsahuje jak direktivu sendfile, tak direktivy, které aktivují filtr měnící obsah, NGINX automaticky zakáže sendfile pro tento kontext.
Takže už víte, jak získat nejlepší výkon ze serveru Nginx
Web Nginx