baltun
Администратор
- Сообщения
- 12.295
- Реакции
- 3.085
- Баллы
- 1.833
Иногда при высоких нагрузках можно видеть в nginx такую ошибку:
В Linux / UNIX системах устанавливаются мягкие и жесткие ограничение на количество открытых файлов. Вы можете использовать команду ulimit для просмотра этих ограничений:
Чтобы увидеть жесткие и мягкие ограничения, выполните команду следующим образом:
Как увеличить лимит на уровне ОС Linux.
Для этого требуется отредактировать файл /etc/sysctl.conf.
Добавьте или измените следующую строку:
Сохраните и закройте файл. Измените /etc/security/limits.conf, введите:
Установите мягкий и жесткий лимит для всех пользователей или пользователей nginx следующим образом:
Чтобы загрузить в sysctl параметры из указанного файла /etc/sysctl.conf, введите следующую команду:
Nginx также поставляется с директивой worker_rlimit_nofile, которая позволяет увеличить этот предел. Чтобы установить значение для максимальных дескрипторов файлов, которые могут быть открыты процессом nginx. Измените файл nginx.conf, введите:
Добавьте или измените следующую строку:
Сохраните и закройте файл. Перезагрузите веб-сервер nginx. Для проверки лимитов выполните:
Код:
2010/04/16 13:24:16 [crit] 21974#0: *3188937 open() “/usr/local/nginx/html/50x.html” failed (24: Too many open files), client: 88.x.y.z, server: example.com, request: “GET /file/images/background.jpg HTTP/1.1”, upstream: “http://10.8.4.227:81//file/images/background.jpg”, host: “example.com”
В Linux / UNIX системах устанавливаются мягкие и жесткие ограничение на количество открытых файлов. Вы можете использовать команду ulimit для просмотра этих ограничений:
Код:
su - nginx
Чтобы увидеть жесткие и мягкие ограничения, выполните команду следующим образом:
Код:
ulimit -Hn
ulimit -Sn
Как увеличить лимит на уровне ОС Linux.
Для этого требуется отредактировать файл /etc/sysctl.conf.
Код:
nano /etc/sysctl.conf
Добавьте или измените следующую строку:
Код:
fs.file-max = 70000
Сохраните и закройте файл. Измените /etc/security/limits.conf, введите:
Код:
nano /etc/security/limits.conf
Установите мягкий и жесткий лимит для всех пользователей или пользователей nginx следующим образом:
Код:
nginx soft nofile 10000
nginx hard nofile 30000
Чтобы загрузить в sysctl параметры из указанного файла /etc/sysctl.conf, введите следующую команду:
Код:
sysctl -p
Nginx также поставляется с директивой worker_rlimit_nofile, которая позволяет увеличить этот предел. Чтобы установить значение для максимальных дескрипторов файлов, которые могут быть открыты процессом nginx. Измените файл nginx.conf, введите:
Код:
nano /usr/local/nginx/conf/nginx.conf
Добавьте или измените следующую строку:
Код:
worker_rlimit_nofile 30000;
Сохраните и закройте файл. Перезагрузите веб-сервер nginx. Для проверки лимитов выполните:
Код:
su - nginx
ulimit -Hn
ulimit -Sn