Sobes.tech
Middle

Nginx bilan ishlashda 1024 ta ulanishdan oshganda xato yuzaga kelsa nima qilish kerak?

sobes.tech AI

AIdan javob

Бу, очилган файл дескрипторларининг сонида чекловни кўрсатади.

Ечиш йўллари:

  1. Nginx конфигурациясида worker_connections ни ошириш:

    // Бир ишчи жараён учун максимал уланишлар сонини ошириш
    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 исмини ўзгартириш мумкин, агар бошқа бўлса.) Ўзгартиришлар амалга оширилиши учун тизимни қайта юклаш ёки қайта кириш керак, ёки 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-ни қайта юклаш
    sudo systemctl reload nginx
    # Ёки, агар ёрдам бермаса
    # sudo systemctl restart nginx
    

Ечимда устуворлик:

  1. worker_connections ни текшириб, ошириш.
  2. Nginx фойдаланувчиси учун файл дескриптор лимитларини ошириш.
  3. Глобал fs.file-max лимитини ошириш.
  4. Nginx-ни қайта юклаш.

Эътибор беринг, лимитларни ошириш асосланиши ва сервернинг мавжуд ресурслари билан боғлиқ бўлиши керак (хотира, CPU). Жуда юқори қийматлар тизимнинг барқарорлигига таъсир қилиши мумкин.