nginx uLimit 'worker_connections açık dosya kaynak sınırını aşıyor: 1024'


15

Bu hatayı almaya devam ediyorum nginx/error.logve beni deli ediyor:

8096 worker_connections exceed open file resource limit: 1024

Aklıma gelen her şeyi denedim ve nginx'i neyin sınırladığını anlayamıyorum. Neyi kaçırdığımı söyleyebilir misin?

nginx.conf şuna sahiptir:

worker_processes 4;
events {
        worker_connections 8096;
        multi_accept on;
        use epoll;
}

Sistemimin Ulimit'ini şu şekilde değiştirdim security/limits.conf:

# This is added for Open File Limit Increase
*               hard    nofile          199680
*               soft    nofile          65535

root            hard    nofile          65536
root            soft    nofile          32768

# This is added for Nginx User
nginx           hard    nofile          199680
nginx           soft    nofile          65535

Hala hatayı gösteriyordu. Bu yüzden de düzenlemeyi denedim /etc/default/nginxve bu satırı ekledim:

ULIMIT="-n 65535"

Hala aynı hatayı gösteriyor. Nginx işçi bağlantısını neyin sadece 1024 ile sınırladığını anlayamıyorum. Bana işaret edebilir misiniz?

Debian 7 + nginx var

Yanıtlar:


30

worker_rlimit_nofile 65535;Ana bağlamda nginx.conf içinde ayarlayın .


1
Bu kadar! Bunu düzelttim. Ah sen bir kurtarıcısın. Artık ULimit manuel olarak ayarlanmadığında bile çalışır /etc/default/nginx file. Muhteşem. @Xaviour
Neel

1
Aferin Xavier.
Dave Holland

@Xavier bu hata mesajını kaldırdı, ancak bunun aşağıdaki cevapta belirtildiği gibi ulimit değiştirmeden neden çalıştığını açıklayabilir misiniz? google aramaları sınırlar.conf veya systcl.conf'da ulimit değiştirmeyi söyler, ancak hiçbiri benim için çalışmaz.
Bsienn

2

Kullanıcı ol:

su - nginx

Sınırları kontrol edin:

ulimit -Hn
ulimit -Sn

Dosya sisteminin açmanıza izin vereceği dosya sayısını düzenleyin:

vi /etc/sysctl.conf
fs.file-max = 70000

değişikliklerinizi yükleyin:

sysctl -p

Bunun yardımcı olup olmadığını görün.


Ben init kullanıyorum ve yüklü systemctl sığınak. Fark eder mi?
Neel

Nginx kullanıcısı olarak değiştirdiğimde, ulimit -Hn orada doğru bir şekilde gösteriliyor. Daha sonra kontrol ettim init.d/nginxve ULIMIT'in varsayılan klasörde (önceden ayarlanmış olduğu yerde) ayarlanıp ayarlanmadığını kontrol eder ve daha sonra bu değeri ayarlaması gerekir, ancak bunu yapmaz:Check if the ULIMIT is set in /etc/default/nginx
Neel

Dosya-max değiştirdikten ve sysctl -pubuntu 18.04.2 çalıştırır çalıştırmaz kilitleniyor, çok fazla dosya açık atar ve önyükleme yapmaz, OS önyükleme yapmak için güvenli önyükleme kodu kaldırmak zorunda kaldı.
Bsienn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.