Re: периодическое перезаполнение структур модуля по данным из конфига

Yury Zavarin yury.zavarin на gmail.com
Сб Апр 3 07:33:44 MSD 2010


2010/4/3 Михаил Монашёв <postmaster на softsearch.ru>

> Здравствуйте, Юрий.
>
> YZ> Пишу  сейчас  модуль  к  nginx'у. Этот модуль берет из конфига имя
> YZ> файла,  из которого он берет какие-то данные и держит их в памяти.
> YZ> Есть  необходимость  периодически  (раз  в  минуту  или раз в пять
> YZ> минут,  например)  перечитывать  этот  файл  и  использовать новые
> YZ> данные (если они поменялись). Само имя файла не меняется.
> YZ>
> YZ> Как правильно это делать?
> YZ> Правильно  ли  я  понимаю,  что можно, например, делать так, чтобы
> YZ> поменялась  inode'а у конфига и делать nginx reload и при этом все
> YZ> будет  хорошо  работать?  Или  лучше  использовать какой-то другой
> YZ> вариант?  (Вариант проверять при каждом запросе, что подошло время
> YZ> перечитать файл, кажется мне плохим.)
>
> reload каждую минуту не хорошо делать. Накопится много завершающих
> свою работу воркеров. Они будут кушать память.
>
> YZ> И еще один вопрос.
> YZ> В  данном  случае  получается,  что  каждый воркер будет держать в
> YZ> памяти  то, что он прочитал из файла. Пока что это не представляет
> YZ> проблемы, данных не так уж много.
> YZ> Но  если все же проблема возникнет, то в какую сторону смотреть? В
> YZ> сторону ngx_shared_memory_add и т. д.?
>
> Вот  и  ответ  на твой первый вопрос: храни свои данные в шаредмеме, а
> обновляй их там другой программой хоть раз в секунду.
>

Угу, наверное. Только средствами самого nginx'а, как выяснилось, этого
добиться не получится: он создает только неименованные (в конечном счете)
области расшаренной памяти, к которой могут обращаться только воркеры и сам
мастер процесс.
Придется напрямую использовать IPC.


>
>
> --
>
> С уважением,
> Михаил Монашёв
> mailto:postmaster на softsearch.ru
> ICQ# 166233339
> http://michael.mindmix.ru/
> Без бэкапа по жизни.
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100403/dea4d960/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru