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
) если они хотят.