nginx uLimit 'worker_connections melebihi batas sumber daya file terbuka: 1024'

14

Saya terus mendapatkan kesalahan ini nginx/error.logdan ini membuat saya gila:

8096 worker_connections exceed open file resource limit: 1024

Saya sudah mencoba semua yang dapat saya pikirkan dan tidak dapat menemukan apa yang membatasi nginx di sini. Bisakah Anda memberi tahu apa yang saya lewatkan?

nginx.conf memiliki ini:

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

Saya mengubah Ulimit sistem saya security/limits.confseperti ini:

# 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

Itu masih menunjukkan kesalahan. Jadi saya juga mencoba mengedit /etc/default/nginxdan menambahkan baris ini:

ULIMIT="-n 65535"

Itu masih menunjukkan kesalahan yang sama. Tidak dapat mengetahui apa yang membatasi koneksi pekerja nginx hanya 1024. Bisakah Anda menunjukkan saya?

Saya mendapat Debian 7 + nginx

Neel
sumber

Jawaban:

29

Diatur worker_rlimit_nofile 65535;dalam nginx.conf dalam konteks utama.

Xavier Lucas
sumber
1
Itu dia! Itu memperbaikinya. Oh kamu adalah penyelamat. Ini berfungsi sekarang bahkan ketika ULimit tidak diatur secara manual /etc/default/nginx file. Luar biasa. Terima kasih @Xaviour
Neel
1
dilakukan dengan baik Xavier.
Dave Holland
@Xavier ini memang menghapus pesan kesalahan, tetapi dapatkah Anda menjelaskan mengapa ini berfungsi tanpa mengubah ulimit seperti yang disebutkan dalam jawaban di bawah ini? pencarian google memberitahu untuk mengubah ulimit di membatasi.conf atau systcl.conf, tetapi tidak ada yang berhasil untuk saya.
Bsienn
2

Menjadi pengguna:

su - nginx

Periksa batasnya:

ulimit -Hn
ulimit -Sn

Edit jumlah file yang akan dibuka oleh sistem file:

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

muat perubahan Anda:

sysctl -p

Lihat apakah itu membantu.

Dave Holland
sumber
Saya menggunakan systemctl init dan havent diinstal. Apakah itu akan membuat perbedaan?
Neel
Ketika saya berubah menjadi pengguna Nginx, ulimit -Hn ditampilkan dengan benar di sana. Saya kemudian memeriksa init.d/nginxdan memeriksa apakah ULIMIT diatur dalam folder default (di mana sudah diatur) dan kemudian seharusnya menetapkan nilai itu tetapi tidak:Check if the ULIMIT is set in /etc/default/nginx
Neel
Setelah mengubah file-max dan segera setelah saya menjalankan sysctl -pubuntu 18.04.2 hang, melempar terlalu banyak file terbuka dan tidak bisa boot, harus menghapus kode dalam boot aman untuk membuat OS boot lagi.
Bsienn