nginx uLimit 'work_connections перевищує ліміт відкритого файлу: 1024'


15

Я продовжую отримувати цю помилку, nginx/error.logі це змушує мене гаїти:

8096 worker_connections exceed open file resource limit: 1024

Я спробував усе, що я можу придумати, і не можу зрозуміти, що тут обмежує nginx. Чи можете ви сказати, що я пропускаю?

nginx.conf має таке:

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

Я змінив Ulimit своєї системи 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

Це все ще показувало помилку. Тому я також спробував редагувати /etc/default/nginxі додав цей рядок:

ULIMIT="-n 65535"

Він все ще показує ту саму помилку. Не можу зрозуміти, що обмежує підключення робочого nginx лише 1024. Чи можете ви вказати на мене?

У мене Debian 7 + nginx

Відповіді:


30

Встановити worker_rlimit_nofile 65535;в nginx.conf в основному контексті.


1
Це воно! Це і виправило. Ой ти рятівник. Він працює зараз, навіть коли ULimit не встановлюється вручну /etc/default/nginx file. Дивовижно. Дякую @Xaviour
Neel

1
молодець Ксав'є.
Дейв Холланд

@Xavier це видалив повідомлення про помилку, але чи можете ви пояснити, чому це працює без зміни ulimit, як зазначено у відповіді нижче? Пошук Google вказує змінити ulimit у limit.conf або systcl.conf, але для мене жоден не працює.
Bsienn

2

Станьте користувачем:

su - nginx

Перевірте межі:

ulimit -Hn
ulimit -Sn

Відредагуйте кількість файлів, які файлова система дозволить вам відкрити:

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

завантажте свої зміни:

sysctl -p

Подивіться, чи це допомагає.


Я використовую init і не встановлений systemctl. Чи це змінило б значення?
Ніл

Коли я перейшов на користувача Nginx, там з'являється коректна програма ulimit -Hn. Потім я перевірив, init.d/nginxі він перевіряє, чи встановлено ULIMIT у папці за замовчуванням (там, де він уже встановлений), а потім повинен встановити це значення, але це не так:Check if the ULIMIT is set in /etc/default/nginx
Ніл

Після зміни файлу max і як тільки я запускаю sysctl -pubuntu 18.04.2 висить, кидає занадто багато файлів, відкритих і не завантажуючись, довелося видалити код у захищеному завантаженні, щоб зробити знову завантаження ОС.
Bsienn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.