Назад | Перейти на главную страницу

Как выбрать правильное значение для open_file_cache в конфигурации nginx?

У меня есть сайт с нагрузкой около 60 000 запросов в минуту, обслуживаемых nginx. Недавно я включил open file cache и увидел резкое улучшение производительности. Но по вечерам, когда нагрузка максимальна, время отклика по-прежнему довольно велико, и nginx использует много операций ввода-вывода.

Вот мои текущие настройки:

open_file_cache max=10000 inactive=30s;
open_file_cache_valid    60s;
open_file_cache_min_uses 2;
open_file_cache_errors   on;

И у меня еще остались воспоминания:

free -m
             total       used       free     shared    buffers     cached
Mem:          7910       6917        992          0        439        885
-/+ buffers/cache:       5592       2317
Swap:         8099          0       8099

Вопрос: теперь выбрать правильное значение для open_file_cache max=10000 а другие параметры? 10000 достаточно, это слишком мало или велико? Есть ли способ отслеживать использование кэша открытых файлов?

Кэш открытых файлов - это система кеширования для операций с метаданными (mtime файла, существование файла и т. Д.), А не для содержимого файла, поэтому он помогает, но не так сильно, как вы ожидаете.

Вот некоторые обходные пути, которые вы можете попробовать:

  • Уменьшите коэффициент сжатия gzip, если вы включили динамический gzip.
  • Если у вас достаточно последнее ядро ​​(> 2.6.22), попробуйте включить aio. Проверьте http://wiki.nginx.org/HttpCoreModule#aio
  • Отключите ведение журнала доступа. Одно это может дать вам очень высокий скачок в производительности. Убедитесь, что он вам не нужен!
  • Попробуйте использовать фактический модуль кэширования содержимого файлов, например https://github.com/bpaquet/ngx_http_enhanced_memcached_module. Предупреждение: это потребует перекомпиляции nginx из исходников!

Вы также можете попробовать буферы, поскольку nginx не будет записывать временные файлы, когда у вас достаточно буферов.