Re: Влияние на производительность проверок на существоание файла (-f) в rewrite модуле
Maxim Dounin
mdounin на mdounin.ru
Чт Май 23 12:43:53 UTC 2019
Hello!
On Thu, May 23, 2019 at 03:10:28PM +0500, Dmitry Sergeev wrote:
> Всем привет. Не поделится ли кто-нибудь опытом, сильно ли может повлиять
> на произовдительность конструкция:
>
> > location / {
> > if (-f /var/www/maintenance_on.html) {
> > return 503;
> > }
> >
> >
> > ...
> > }
> >
> >
> > # Error pages.
> > error_page 503 /maintenance_on.html;
> > location = /maintenance_on.html {
> > root /var/www;
> > }
> Например 7-10 location с такими проверками на хосте 4K запросов в секунду?
> На каждый запрос он будет проверять существование файла? Или как-то это
> делает по таймауту, который можно настроить?
При такой конфигурации на каждый запрос[*] будет делаться
системный вызов stat(). Скорее всего необходимые данные будут в
кэше операционной системы, и этот системный вызов будет быстрым,
так что на производительности это скажется минимально.
Так что если речь не идёт о борьбе за каждый процент - про
производительность подобной конструкции можно не переживать.
Другой вопрос, что сама по себе конструкция не очень, выкатку
нужно уметь делать без перерывов в обслуживании.
[*] Вообще-то в можно ещё и настроить кэширование внутри nginx'а,
чтобы сэкономить системные вызовы (http://nginx.org/r/open_file_cache).
Но практика показывает, что на производительность это влияет
минимально, а вот выстрелить себе в ногу неатомарным изменением
файлов станет легко.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru