Sobes.tech
Middle

Чӣ бояд кард, агар ҳангоми кор бо nginx хатогӣ рӯй диҳад вақте ки аз 1024 пайвастшавӣ зиёд мешавад?

sobes.tech AI

Ҷавоб аз AI

Ин индикација за ограничување на бројот на отворени файловни дескриптори.

Решенија:

  1. Зголемување на worker_connections во конфигурацијата на Nginx:

    // Зголемување на максималниот број на врски по еден worker процес
    events {
        worker_connections 4096; // или повеќе, во зависност од потребите и ресурсите
    }
    
  2. Зголемување на лимитот на отворени файлови на ниво на оперативниот систем:

    • За тековната сесија на корисникот:
      # Временски зголемување на лимитот на отворени файлови
      ulimit -n 65536
      
    • За целиот систем (континуирано): Уредете ја датотеката /etc/security/limits.conf. Додадете редови:
      # Лимити за одреден корисник
      nginx soft nofile 65536
      nginx hard nofile 65536
      
      # Или, за сите корисници
      # * soft nofile 65536
      # * hard nofile 65536
      
      (Заменете nginx со името на корисникот под кој работи Nginx, ако е различно.) Потребно е да се рестартира системот или да се повторно се најавите за да се применат промените, или да се изврши sysctl -p.
  3. Проверка на глобалните поставки на јадрото: Осигурајте се дека fs.file-max е доволно високо.

    # Проверка на тековната вредност
    cat /proc/sys/fs/file-max
    # Поставување на нова вредност (привремено)
    # sudo sysctl -w fs.file-max=100000
    # Поставување на нова вредност (континуирано) - уредете ја `/etc/sysctl.conf`
    # Додадете ред: fs.file-max = 100000
    # Аплицирајте ги промените
    # sudo sysctl -p
    
  4. Осигурајте се дека корисникот Nginx има право да отвора толку датотеки: Проверете под кој корисник работи Nginx и какви лимити се поставени за тој корисник. Ова е поврзано со точката 2.

  5. Рестартирајте Nginx: По внесувањето промени во конфигурацијата на Nginx или системските лимити, потребно е да се рестартира.

    # Рестартирање на Nginx
    sudo systemctl reload nginx
    # Или, ако не помогне
    # sudo systemctl restart nginx
    

Приоритет во решавањето:

  1. Проверете и зголемете worker_connections.
  2. Проверете и зголемете лимитите за датотеки за корисникот Nginx.
  3. Проверете и зголемете глобалниот лимит fs.file-max.
  4. Рестартирајте Nginx.

Важно е да се запамети дека зголемувањето на лимитите треба да биде оправдано и во согласност со достапните ресурси на серверот (памет, CPU). Превисоките вредности можат да доведат до нестабилност на системот.