Sobes.tech
Middle

Čo robiť, ak pri práci s nginx dôjde k chybe pri prekročení 1024 spojení?

sobes.tech AI

Odpoveď od AI

Toto naznačuje obmedzenie počtu otvorených súborových deskriptorov.

Riešenia:

  1. Zvýšenie worker_connections v konfigurácii Nginx:

    // Zvýšime maximálny počet spojení na jeden worker proces
    events {
        worker_connections 4096; // alebo viac, v závislosti od potrieb a zdrojov
    }
    
  2. Zvýšenie limitu otvorených súborov na úrovni operačného systému:

    • Pre aktuálnu reláciu používateľa:
      # Dočasne zvýšime limit otvorených súborov
      ulimit -n 65536
      
    • Pre celý systém (trvalo): Upraviť súbor /etc/security/limits.conf. Pridať riadky:
      # Limity pre špecifického používateľa
      nginx soft nofile 65536
      nginx hard nofile 65536
      
      # Alternatívne, pre všetkých používateľov
      # * soft nofile 65536
      # * hard nofile 65536
      
      (Nahradiť nginx menom používateľa, pod ktorým beží Nginx, ak je iné.) Je potrebné reštartovať systém alebo sa odhlásiť a prihlásiť znova, alebo vykonať sysctl -p.
  3. Kontrola globálnych nastavení jadra: Uistiť sa, že fs.file-max je dostatočne vysoké.

    # Skontrolovať aktuálnu hodnotu
    cat /proc/sys/fs/file-max
    # Nastaviť novú hodnotu (dočasne)
    # sudo sysctl -w fs.file-max=100000
    # Nastaviť novú hodnotu (trvalo) - upraviť /etc/sysctl.conf
    # Pridať riadok: fs.file-max = 100000
    # Aplikovať zmeny
    # sudo sysctl -p
    
  4. Uistiť sa, že používateľ Nginx má právo otvárať toľko súborov: Skontrolovať, pod ktorým používateľom beží Nginx a aké limity má pre tohto používateľa. Toto súvisí s bodom 2.

  5. Reštartovať Nginx: Po vykonaní zmien v konfigurácii Nginx alebo systémových limitoch je potrebné ho reštartovať.

    # Reštart Nginx
    sudo systemctl reload nginx
    # Alebo, ak to nepomohlo
    # sudo systemctl restart nginx
    

Priorita v riešení:

  1. Skontrolovať a zvýšiť worker_connections.
  2. Skontrolovať a zvýšiť limity súborov pre používateľa Nginx.
  3. Skontrolovať a zvýšiť globálny limit fs.file-max.
  4. Reštartovať Nginx.

Dôležité je pamätať, že zvýšenie limitov by malo byť odôvodnené a v súlade s dostupnými zdrojmi servera (pamäť, CPU). Príliš vysoké hodnoty môžu viesť k nestabilite systému.