nginx cache
Maxim Dounin
mdounin at mdounin.ru
Wed Apr 29 11:18:18 UTC 2015
Hello!
On Wed, Apr 29, 2015 at 12:35:22PM +0300, Vasil Mikhalenya wrote:
> Коллеги, подскажите что происходит
[...]
> proxy_cache_path /var/lib/nginx/cache keys_zone=mycdn:20m inactive=1d
> use_temp_path=off;
>
>
> server {
> listen 80;
> server_name mycdn.com 127.0.0.1;
>
> proxy_cache mycdn;
>
> location / {
> proxy_pass http://origin;
> proxy_set_header Host $proxy_host;
> proxy_cache_lock on;
> proxy_cache_lock_age 2h;
> proxy_cache_lock_timeout 2h;
> proxy_cache_key "$uri";
> add_header Cache $upstream_cache_status;
> }
> }
>
>
> [root at node ~]# ll /var/lib/nginx/cache/ | wc -l
>
> 228
> т.е. у nginx в cache есть около 2 сотен популярных файлов (118G
> /var/lib/nginx/cache/),
> он успешно отдает несколько дней, ничего нового из origin не качает, в
> какой то момент случается это
Видимо, это происходит в тот момент, когда ответы в кеше
expire'ятся. Имеет смысл включить "proxy_cache_use_stale
updating", см. тут:
http://nginx.org/r/proxy_cache_use_stale/ru
Кроме того, если речь идёт о больших статических файлах - имеет
смысл также использовать proxy_cache_revalidate, см. тут:
http://nginx.org/r/proxy_cache_revalidate/ru
> [root at node ~]# ll /var/lib/nginx/cache/temp/ | wc -l
>
> 5714
>
> Т.е. число файлов в temp растет очень быстро, хотя обычно = 0.
>
> restart nginx и очистка tempdir не помогает (файлы в tempdir появляются
> снова), помогает только полная очистка cache
Потому что proxy_cache_lock используется только при добавлении
элементов в кеш. Если хочется избежать одновременных обращений на
бекенд нескольких клиентов при обновлении, то надо включать
"proxy_cache_use_stale updating", см. выше.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru