open_log_file_cache

Директива `open_log_file_cache` повышает производительность ведения логов за счёт кэширования дескрипторов файлов журналов. — NGINX HTTP Core

open_log_file_cache
httpserverlocation
Синтаксисopen_log_file_cache zone=name:size timeout=duration max=number;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1-4

Описание

Директива `open_log_file_cache` применяется в контекстах http, server и location для улучшения производительности при доступе к файлам журналов. Путём кэширования дескрипторов файлов журналов она уменьшает накладные расходы при доступе к файлам, особенно при одновременной записи в логи. Эта директива принимает до четырёх параметров, которые могут задавать такие настройки, как размер кэша, timeout и максимально допустимое число записей в кэше. Параметры указываются в следующем формате: `open_log_file_cache zone=name:size timeout=duration max=number;`. Параметр `zone` задаёт имя и размер сегмента разделяемой памяти, используемого кэшем. Параметр `timeout` определяет, как долго кэш считается действительным прежде чем файл повторно проверяется на своё состояние, а параметр `max` ограничивает максимальное количество элементов файлов, которые могут храниться в кэше. При правильной конфигурации использование этой директивы может привести к снижению задержки при записи логов, особенно при высокой нагрузке на сервер или большом количестве одновременных операций записи. Однако необходимо внимательно подойти к выбору размера кэша и параметров времени жизни, чтобы эффективно оптимизировать как производительность, так и использование памяти.

Пример конфига

http {
    open_log_file_cache zone=logs_cache:10m timeout=30s max=1000;
}

Если размер кэша слишком мал, это может привести к частым промахам и свести на нет преимущества в производительности.

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