A bejegyzés durumis AI által generált összefoglalója
Az nginx webkiszolgáló teljesítményének optimalizálása érdekében a cikk a gzip tömörítést, a proxy_buffer beállítást, valamint a worker és keep-alive beállításokat tárgyalja.
Különösen hangsúlyozza a gzip tömörítés és a proxy_buffer pufferelés fontosságát az adatátviteli mennyiség csökkentése és a kiszolgáló terhelés minimalizálása érdekében, valamint a worker folyamatok és a keep-alive beállítások szerepét a kapcsolatkezelésben.
A cikk különböző teszteket is bemutat, amelyek segítségével meghatározható a szerver környezethez illeszkedő optimális beállítás, valamint útmutatást ad a stabil kiszolgáló működéséhez szükséges óvintézkedésekre vonatkozóan.
Az nginx egy nyílt forráskódú szoftver, amelyet gyakran használnak webszerverként vagy web proxy szerverként.
A megfelelő konfigurációval hatékonyan szolgálhat ki statikus tartalmakat.
Ebben a bejegyzésben néhány fontos konfigurációs beállítást szeretnék leírni.
Néhány fontos beállítás a teljesítmény optimalizálására
1. gzip tömörítés
Egy weboldal betöltésekor számos fájlt kapunk a webszervertől, mint például JavaScript, képek, HTML és CSS fájlok.
A gzip tömörítéssel jelentősen csökkenthetjük az átvitt adatok mennyiségét, ahelyett, hogy az eredeti fájlokat küldenénk.
Tehát, ha ezt alkalmazzuk:
- Csökken az adatmennyiség, így megtakarítható a sávszélesség.
- Megtakarítható a szerver erőforrás.
- A felhasználók számára gyorsabb betöltési sebességet biztosít.
Ugyanakkor, mivel a szervernek a válasz küldése előtt gzip tömörítést kell végrehajtania, megnövekedhet a CPU terhelése.
Fontos a tesztelés a bevezetés előtt, hogy meghatározzuk, mely fájltípusokat tömörítsük, milyen tömörítési szintet alkalmazzunk, és mekkora fájlokat tömörítsünk.
Íme néhány gzip-hez kapcsolódó beállítás:
gzip on; # Beállítja a gzip tömörítést.
gzip_vary on; # Hozzáadja a Vary: Accept-Encoding fejlécet.
gzip_proxied any; # Ha az nginx proxy szerverként van használva, akkor a háttérszerver válaszát is tömöríti. (Proxy-olt kérések tömörítése)
gzip_min_length 256; # Csak 256 bájt vagy nagyobb fájlokat tömörít.
gzip_comp_level 5; # 1-9 közötti tömörítési szintet állít be. Minél magasabb az érték, annál nagyobb a CPU terhelés. Az 5 körülbelül 50%-os tömörítést jelent.
gzip_types text/plain text/css text/xml application/json application/javascript;
// Beállítja a tömörítendő tartalom típusokat.
* A `gzip_vary` utasítás biztosítja, hogy a kliens gzip támogatása esetén tömörített, támogatás hiányában pedig tömörítetlen verziót kapjon a tartalomból. (Jelzi, hogy a kliens kérés fejléce (Accept-Encoding) alapján különböző verziójú tartalom kerülhet kiszolgálásra.)
2. proxy_buffer beállítás
Az nginx a válaszokat pufferben tárolja, mielőtt elküldi a kliensnek.
Ha a kliens lassú, a szervernek várnia kell az adatok elküldésével. (Hálózati torlódás)
Ez folyamatos szerver terhelést jelent. A puffereléssel a kliens sebességétől függetlenül ideiglenesen tároljuk a válaszokat. Ennek előnyei:
- Optimalizált szerverterhelés
- Csökkentett hálózati torlódás
location / {
proxy_pass szerver_url;
# Proxy puffer beállítások
proxy_buffering on; # Engedélyezi a pufferelést.proxy_buffer_size 4k; # Beállítja a puffer méretét.(Főleg a fejlécek tárolására szolgál.) proxy_buffers 8 4k; # A pufferek száma és mérete minden egyes kapcsolathoz(8 db 4kB-os puffer) proxy_busy_buffers_size 8k; # A maximális puffer méret, ami a válasz klienshez való küldése közben használható.}
※ Túl nagy pufferméret esetén a valós idejű adatátvitel (pl. text streaming) késhet, ezért tesztelés szükséges. Különösen az AI-alapú szolgáltatások esetében fontos ellenőrizni ezt a beállítást, ha a szöveg streamelés nem működik megfelelően.
3. worker és http beállítások
A worker folyamatok kezelik a kliensek kéréseit, és beállítható, hogy a CPU magonként hány worker futjon.
Az http protokollban általában kérés-kapcsolat-válasz-kapcsolatbezárás a menet, de a kapcsolatok újrahasznosításával (keep-alive) csökkenthetjük az erőforrás-felhasználást.
worker_processes auto; # Automatikus beállítás a rendelkezésre álló CPU magok száma alapján
worker_connections 1024; # Minden worker által egyszerre kezelhető kapcsolatok száma
# keep-alive beállítások
keepalive_timeout 65;
keepalive_requests 100;
server {
listen 80;
location / {
proxy_pass szerver_url;
}
}
A két beállítást együtt említjük az alábbi okokból:
Ha a szervernek 4 magja van, akkor elméletileg 1024 * 4 = 4096 kapcsolatot tud kezelni.
(Az erőforrások és a forgalom függvényében ez az érték nem mindig pontos.)
Ha 4096 kliens csatlakozik egyszerre, és 65 másodpercig foglalják le a keep-alive kapcsolatokat,
akkor a 4097. felhasználó nem tud csatlakozni, ami késést okozhat.
Tehát, ha feltételezzük, hogy az automatikus skálázás biztosítja a stabil erőforrásokat, akkor az események során fellépő késések oka lehet a fenti beállítások.
4. Egyéb - location blokk
A proxy puffer és más beállítások kérésenkénti URL alapján is konfigurálhatók.
* A keep-alive és néhány más beállítás a HTTP/szerver szinten van alkalmazva, így nem blokkonként konfigurálható.
A fenti beállításokkal optimalizálhatjuk a webes teljesítményt. Több tesztesettel alaposan teszteljük a beállításokat, mielőtt élesben alkalmazzuk őket!
* A módosított nginx konfiguráció általában leállás nélkül alkalmazható, így meglehetősen biztonságos.