nginx_error._too_many_open_files
Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| nginx_error._too_many_open_files [2016/11/05 22:33] – создано daniil | nginx_error._too_many_open_files [Дата неизвестна] (текущий) – внешнее изменение (Дата неизвестна) 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== Nginx Error. Too many open files ====== | ====== Nginx Error. Too many open files ====== | ||
| + | ===== Описание ===== | ||
| + | В логе ошибок Nginx: | ||
| < | < | ||
| ...socket() failed (24: Too many open files) while connecting to upstream..." | ...socket() failed (24: Too many open files) while connecting to upstream..." | ||
| </ | </ | ||
| + | |||
| + | Для одного соединения Nginx инициирует открытие как минимум двух потоков ввода-вывода. Каждому потоку присваивается файловый дескриптор. В операционной системе имеется ограничение на количество одновременно открытых потоков ввода-вывода для одного процесса. Упомянутая ошибка сообщает о том, что процессы Nginx достигли это ограничение. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Диагностика ===== | ||
| + | |||
| + | Список файловых дестрипторов, | ||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | где | ||
| + | |||
| + | * **%%$pid%%** - ID процесса | ||
| + | |||
| + | Красивый вывод статистики по процессам Nginx: | ||
| + | |||
| + | <code bash> | ||
| + | for pid in `pidof nginx`; do echo " | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | nginx: worker process | ||
| + | Limit Soft Limit Hard Limit | ||
| + | Max open files 131072 | ||
| + | Currently open files: 25 | ||
| + | |||
| + | nginx: worker process | ||
| + | Limit Soft Limit Hard Limit | ||
| + | Max open files 131072 | ||
| + | Currently open files: 29 | ||
| + | |||
| + | nginx: worker process | ||
| + | Limit Soft Limit Hard Limit | ||
| + | Max open files 131072 | ||
| + | Currently open files: 29 | ||
| + | |||
| + | nginx: worker process | ||
| + | Limit Soft Limit Hard Limit | ||
| + | Max open files 131072 | ||
| + | Currently open files: 55 | ||
| + | |||
| + | nginx: master process / | ||
| + | Limit Soft Limit Hard Limit | ||
| + | Max open files 1024 | ||
| + | Currently open files: 23 | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Решение ===== | ||
| + | |||
| + | Если превышение лимита на количество открытых дескрипторов вызвано естественными факторами и его необходимо увеличить (а не искать причину), | ||
| + | |||
| + | * ограничение на количество открытых файловых дискрипторов для воркеров Nginx можно задавать через параметр **worker_rlimit_nofile** : | ||
| + | |||
| + | <code bash> | ||
| + | vim / | ||
| + | </ | ||
| + | |||
| + | <code nginx> | ||
| + | worker_rlimit_nofile 131072; | ||
| + | |||
| + | events { | ||
| + | ... | ||
| + | } | ||
| + | |||
| + | http { | ||
| + | ... | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | nginx -t | ||
| + | service nginx restart | ||
| + | </ | ||
| + | |||
| + | * изменение ограничения со стороны операционной системы: | ||
| + | |||
| + | <code bash> | ||
| + | vim / | ||
| + | </ | ||
| + | |||
| + | добавляем | ||
| + | |||
| + | < | ||
| + | * soft nofile 131072 | ||
| + | * hard nofile 131072 | ||
| + | </ | ||
| + | |||
| + | и выполняем | ||
| + | |||
| + | <code bash> | ||
| + | ulimit -n 131072 | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== Источники ===== | ||
| + | |||
| + | * [[ http:// | ||
| + | * [[ https:// | ||
| + | * [[ https:// | ||
nginx_error._too_many_open_files.1478374380.txt.gz · Последнее изменение: 2016/11/05 00:00 (внешнее изменение)
