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