NGINX постоянно зависает. Похоже, это происходит из-за слишком большого количества открытых файлов.

NGINX постоянно зависает. Похоже, это происходит из-за слишком большого количества открытых файлов.

Как указано в заголовке, мой сервер Nginx, похоже, постоянно падает, хотя причина неизвестна.

У меня есть некоторые подсказки из журнала ошибок, которые могут привести к этой проблеме.

Я пробовал увеличить лимит открытых файлов, это дало некоторый эффект, но безрезультатно.

2015/09/29 17:18:01 [crit] 20560#0: accept4() failed (24: Too many open files)
2015/09/29 17:18:01 [crit] 20560#0: accept4() failed (24: Too many open files)

Я пытался увеличить лимит, но это также видно в моем журнале ошибок

2015/09/29 17:18:02 [alert] 20632#0: setrlimit(RLIMIT_NOFILE, 300000000) failed (1: Operation not permitted)
2015/09/29 17:18:02 [alert] 20633#0: setrlimit(RLIMIT_NOFILE, 300000000) failed (1: Operation not permitted)
2015/09/29 17:18:02 [alert] 20560#0: recvmsg() truncated data

Как дать разрешение на увеличение лимита файлов?

И вообще, это ли причина сбоя моего сервера?

Спасибо!

Только что проверил еще некоторые данные, я отредактировал свои файлы, но по какой-то причине при проверке жесткого лимита отображается значение 4096?

root@nalsec:~# sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.eth0.accept_ra = 0
fs.file-max = 2500000000000000000
root@nalsec:~# ulimit -Hn
4096

Что контрастирует с моим fs.file-max

Я попробовал это, и мне сказали, что у меня нет прав (я root)

root@nalsec:~# ulimit -Hn 1000000000
-bash: ulimit: open files: cannot modify limit: Operation not permitted

Я уже редактировал этот файл, но безрезультатно nano /etc/security/limits.conf

#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4

# End of file
nginx       soft    nofile  10240000000000000000000
nginx       hard    nofile  10240000000000000000000
*         hard    nofile      10240000000000000000000000
*         soft    nofile      10240000000000000000000000
root      hard    nofile      10240000000000000000000000
root      soft    nofile      10240000000000000000000000
www-data soft nofile 1024000000000000000
www-data hard nofile 1024000000000000000

решение1

fs.file-maxявляется общесистемным ограничением наобщийКоличество файловых дескрипторов, которые могут быть открыты в системе. Не влияет на ограничение на процесс.

Чтобы увеличить лимит дескрипторов файлов для отдельных процессов, проще всего это сделать через limits.conf:

# cat /etc/security/limits.d/nofile.conf
* soft nofile 10000
* hard nofile 1000000

Это предоставит всем процессам 10 000 файловых дескрипторов по умолчанию с возможностью запроса обновления до 1 000 000 (через setrlimit), если они этого захотят.

Связанный контент