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.