Sobes.tech
Middle

Mit tegyél, ha nginx használata közben hibát észlelsz, amikor meghaladod a 1024 kapcsolatot?

sobes.tech MI

Válasz az MI-től

Ez a nyitott fájlleírók számának korlátozására utal.

Megoldások:

  1. Növelje a worker_connections értékét az Nginx konfigurációjában:

    // A maximális kapcsolatszám növelése munkafolyamatonként
    events {
        worker_connections 4096; // vagy több, az igények és erőforrások szerint
    }
    
  2. Növelje a nyitott fájlok limitjét az operációs rendszer szintjén:

    • A jelenlegi felhasználói munkamenethez:
      # Ideiglenesen növelje a nyitott fájlok limitjét
      ulimit -n 65536
      
    • Az egész rendszerre (állandóan): Szerkessze a /etc/security/limits.conf fájlt. Adjon hozzá sorokat:
      # Felhasználóspecifikus limitek
      nginx soft nofile 65536
      nginx hard nofile 65536
      
      # Alternatívaként, minden felhasználóra
      # * soft nofile 65536
      # * hard nofile 65536
      
      (Cserélje ki az nginx-et arra a felhasználónévre, amelyen az Nginx fut, ha más.) A változtatások alkalmazásához újra kell indítani a rendszert vagy kijelentkezni és bejelentkezni, vagy futtassa a sysctl -p parancsot.
  3. A kernel globális beállításainak ellenőrzése: Győződjön meg arról, hogy a fs.file-max értéke elég magas.

    # Ellenőrizze az aktuális értéket
    cat /proc/sys/fs/file-max
    # Új érték beállítása (ideiglenes)
    # sudo sysctl -w fs.file-max=100000
    # Új érték beállítása (állandóan) - szerkessze a `/etc/sysctl.conf` fájlt
    # Adja hozzá a sort: fs.file-max = 100000
    # Alkalmazza a változtatásokat
    # sudo sysctl -p
    
  4. Győződjön meg arról, hogy az Nginx felhasználónak joga van ennyi fájlt megnyitni: Ellenőrizze, hogy melyik felhasználó futtatja az Nginx-et, és milyen limitek vannak beállítva erre a felhasználóra. Ez összefügg a 2. ponttal.

  5. Indítsa újra az Nginx-et: A konfiguráció vagy a rendszerlimitek módosítása után újra kell indítani.

    # Nginx újratöltése
    sudo systemctl reload nginx
    # Vagy, ha nem segít
    # sudo systemctl restart nginx
    

A megoldás prioritása:

  1. Ellenőrizze és növelje a worker_connections értékét.
  2. Ellenőrizze és növelje az Nginx felhasználója számára az fájlleíró limitet.
  3. Ellenőrizze és növelje a globális fs.file-max értéket.
  4. Indítsa újra az Nginx-et.

Fontos megjegyezni, hogy a limitek növelése indokoltnak kell lennie, és összhangban kell lennie a szerver rendelkezésre álló erőforrásaival (memória, CPU). Túlságosan magas értékek instabilitáshoz vezethetnek a rendszerben.