Sobes.tech
Middle+

Mit fog tenni, ha az Nginx nem tud megbirkózni a sok kapcsolattal (több mint 1024)?

sobes.tech MI

Válasz az MI-től

Át fogom nézni az Nginx konfigurációját: worker_processes, worker_connections, multi_accept, use (epoll/kqueue) és keepalive_requests, keepalive_timeout paramétereket. Szükség szerint növelni fogom őket.

Ellenőrizni fogom a rendszer limiteket: ulimit -n az Nginx folyamat számára. Meg fogom növelni egy megfelelő értékre.

Optimalizálom a Linux kernel hálózati beállításait: net.core.somaxconn, net.ipv4.tcp_tw_reuse, net.ipv4.tcp_fin_timeout.

Elemzem az Nginx naplókat (error_log, access_log) hibák vagy anomáliák szempontjából.

Figyelemmel kísérő eszközöket fogok használni (nginx-status, top, vmstat, iostat, netdata, Prometheus/Grafana), hogy azonosítsam a szűk keresztmetszeteket (CPU, memória, lemez, hálózat).

Fontolóra veszem erősebb hardver használatát vagy skálázást (további Nginx példányok hozzáadása a load balancer mögött).

Ellenőrizni fogom a backend szervereket: lehet, hogy a probléma nem Nginx-ben van, hanem az alkalmazásokban, amelyek a kéréseket feldolgozzák.

# Növeljük a worker folyamatok számát
worker_processes auto;

# Növeljük az egy workerre eső kapcsolatok számát
events {
    worker_connections 65536;
    multi_accept on;
    use epoll; # Linuxhoz
}

http {
    # Keep-alive beállítások
    keepalive_requests 10000;
    keepalive_timeout 65;

    # ... egyéb beállítások
}
# Az aktuális limit ellenőrzése a Nginx felhasználó számára
su - nginx -c 'ulimit -n'

# Limit növelése a /etc/security/limits.conf fájlban
# nginx - nofile 65536
# nginx - nproc 65536

# SSH munkamenet vagy szerver újraindítása a limits.conf alkalmazásához

# Kernel paraméterek ellenőrzése és módosítása
# Minden változtatás a sysctl -p futtatását igényli
# sysctl net.core.somaxconn
# sysctl -w net.core.somaxconn=65536

# sysctl net.ipv4.tcp_tw_reuse
# sysctl -w net.ipv4.tcp_tw_reuse=1

# sysctl net.ipv4.tcp_fin_timeout
# sysctl -w net.ipv4.tcp_fin_timeout=30