Перейти к содержанию

Вопрос

Опубликовано

nginx теряет файловый дескриптор /etc/uag.json на каждый reload

Прошивка: KeeneticOS 5.2 Beta 2 (5.02.B.2.0-2).
Проверено: Ultra KN-1810 (mipsel). С той же прошивкой и на Netcraze Ultra NC-1812 поведение аналогичное.

 

При каждой перезагрузке конфигурации nginx оставляет открытым ещё один дескриптор файла /etc/uag.json. Дескрипторы не освобождаются до перезапуска nginx. При мягком лимите 1024 веб-сервер примерно через тысячу перезагрузок исчерпывает дескрипторы.


Воспроизведение. Через entware (но можно просто создавать/удалять интерфейсы). Посторонние программы не нужны и они не установлены для воспроизведения. 

p=$(cat /tmp/nginx/nginx.pid)
ls -l /proc/$p/fd | grep -c uag.json
kill -HUP $p
sleep 2
ls -l /proc/$p/fd | grep -c uag.json


Каждый kill -HUP увеличивает счётчик на 1.


Лимит: Max open files 1024 / 4096.

при 1023 FD, из них 985 на /etc/uag.json; nginx перестает отвечать, возвращает 504 на /system. Перезапуск nginx сбрасывает счётчик, затем рост повторяется. 

В сгенерированном nginx.conf есть директива user_agent_db /etc/uag.json. Возможно обработчик этой директивы открывает файл при разборе конфигурации и не закрывает его, а при reload разбор выполняется заново?

 

Рекомендуемые сообщения

  • 0
Опубликовано (изменено)

Reload происходит без ручного сигнала. KN-1810, 5.02.B.2.0-2: мастер nginx PID 11867 запущен в 17:05:20, все воркеры запущены в 18:56:57, в ту же секунду в журнале Http::Manager: updated configuration. Мастер не менялся, воркеры заменены. Проверка: поле 22 в /proc/PID/stat у мастера и воркеров. Каждый такой цикл оставляет открытым ещё один /etc/uag.json.

 

Ноя 5 18:56:55
ndm
Network::Interface::Repository: interface "Proxy0" removed.
Ноя 5 18:56:55
ndm
Netfilter::Ip6::Table: "filter": Proxy0 removed 1 rule.
Ноя 5 18:56:56
ndm
Http::Nginx::Block::HttpServer: loaded SSL certificate for "бла-бла-бла.netcraze.io".
Ноя 5 18:56:56
ndm
Http::Nginx::Block::HttpServer: loaded SSL certificate for "бла-бла-бла.netcraze.pro".
ndm
Http::Manager: updated configuration.

 Reload дают только создание, up, down и no interface ProxyN. (да и любого интерфейса).

 

Изменено пользователем hoaxisr

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.