Sobes.tech
Middle

Ko darīt, ja strādājot ar nginx rodas kļūda, pārsniedzot 1024 savienojumus?

sobes.tech AI

Atbilde no AI

Tas norāda uz atvērto failu deskriptoru skaita ierobežojumu.

Risinājumi:

  1. Palielināt worker_connections Nginx konfigurācijā:

    // Palielinām maksimālo savienojumu skaitu vienam worker procesam
    events {
        worker_connections 4096; // vai vairāk, atkarībā no vajadzībām un resursiem
    }
    
  2. Palielināt atvērto failu limitu operētājsistēmas līmenī:

    • Pašreizējai sesijai lietotājam:
      # Pagaidu palielināt atvērto failu limitu
      ulimit -n 65536
      
    • Visai sistēmai (pastāvīgi): Rediģēt /etc/security/limits.conf failu. Pievienot rindas:
      # Lietotāja specifiskie ierobežojumi
      nginx soft nofile 65536
      nginx hard nofile 65536
      
      # Alternatīvi, visiem lietotājiem
      # * soft nofile 65536
      # * hard nofile 65536
      
      (Aizstāt nginx ar lietotāja vārdu, ja tas ir citādi.) Nepieciešams pārstartēt sistēmu vai atkārtoti pieteikties, lai piemērotu izmaiņas, vai izpildīt sysctl -p.
  3. Pārbaudīt globālos kodola iestatījumus: Pārliecinieties, ka fs.file-max ir pietiekami augsts.

    # Pārbaudīt pašreizējo vērtību
    cat /proc/sys/fs/file-max
    # Piemērot jaunu vērtību (pagaidu)
    # sudo sysctl -w fs.file-max=100000
    # Pastāvīgi iestatīt - rediģēt `/etc/sysctl.conf`
    # Pievienot rindu: fs.file-max = 100000
    # Piemērot izmaiņas
    # sudo sysctl -p
    
  4. Pārliecinieties, ka Nginx lietotājam ir tiesības atvērt tik daudz failu: Pārbaudīt, ar kuru lietotāju darbojas Nginx un kādi ierobežojumi ir šim lietotājam. Tas ir saistīts ar otro punktu.

  5. Pārstartēt Nginx: Pēc konfigurācijas izmaiņām un sistēmas limitu iestatīšanas, to nepieciešams pārstartēt.

    # Pārstartēt Nginx
    sudo systemctl reload nginx
    # Ja tas nepalīdz
    # sudo systemctl restart nginx
    

Prioritāte risinājumā:

  1. Pārbaudīt un palielināt worker_connections.
  2. Pārbaudīt un palielināt failu limitus Nginx lietotājam.
  3. Pārbaudīt un palielināt globālo fs.file-max limitu.
  4. Pārstartēt Nginx.

Svarīgi atcerēties, ka limitu palielināšana jābalsta uz pamatotību un jāatbilst servera resursiem (atmiņa, CPU). Pārāk augstas vērtības var novest pie sistēmas nestabilitātes.