Re: Файлы из кэша удаляются преждевременно

Maxim Dounin mdounin на mdounin.ru
Чт Апр 25 14:51:55 UTC 2019


Hello!

On Wed, Apr 24, 2019 at 01:21:06PM -0400, Ilya Evseev wrote:

> Nginx 1.15.11
> Система - CentOS 7 с ядром 4.18
> /data живёт на Cepf.
> 
> Обнаружено преждевременное удаление файлов из кэша Nginx.
> Кэш настроен так:
> 
>     proxy_cache_path /data/user123/nginx_cache keys_zone=user123:3000m
> max_size=20000g inactive=30d levels=1:2 use_temp_path=off;
> 
> В /data/user123/nginx_cache сейчас лежит около 5 миллионов файлов (т.е.
> примерно 20% от максимума 3000m),
> которые занимают 6 терабайт (30% от максимума 20TB).

На вскидку вспоминаются две причины, почему может быть так:

- При работе на экзотических файловых системах сообщаемый nginx'у 
  размер на диске может значительно отличаться от собственно 
  размера файла и/или значительно меняться в процессе.  Такое, 
  например, наблюдается на XFS 
  (https://trac.nginx.org/nginx/ticket/157).

- Если вдруг из каталога кэша кто-то удалил часть файлов в 
  процессе работы - nginx будет продолжать считать, что эти файлы 
  существуют, и учитывать их при очистке кэша по max_size.  Частным 
  случаем этой ситуации может являться запуск другого nginx'а, 
  использующего тот же каталог для хранения кэша - уже наблюдал, как 
  люди пытаются таким образом строить "общий кэш" на нескольких 
  серверах, однако следует понимать, что такой подход принципиально 
  неверен и чреват проблемами.

С учётом использования Ceph для хранения кэша (зачем?!) - я бы 
предположил, что причиной может быть как любая из этих причин, так 
и обе они вместе.

-- 
Maxim Dounin
http://mdounin.ru/


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