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-ը և ինչ սահմանափակումներ կան այդ օգտվողի համար։ Սա կապված է երկրորդ կետի հետ:

  5. Նորից սկսել Nginx-ը: Փոփոխություններ կատարելուց հետո՝ անհրաժեշտ է վերաբեռնել Nginx-ը:

    # Nginx վերաբեռնել
    sudo systemctl reload nginx
    # Եթե դա չօգնի
    # sudo systemctl restart nginx
    

Առաջնահերթությունը լուծման մեջ՝

  1. Ստուգել և ավելացնել worker_connections
  2. Ստուգել և ավելացնել ֆայլային սահմանափակումները Nginx օգտվողի համար
  3. Ստուգել և ավելացնել fs.file-max գլոբալ սահմանափակումը
  4. Վերաբեռնել Nginx-ը

Կարևոր է հիշել, որ սահմանափակումների ավելացումը պետք է հիմնավորված լինի և համապատասխան լինի սերվերի ռեսուրսներին (հիշողություն, CPU): Շատ բարձր արժեքները կարող են հանգեցնել համակարգի անկայունության: