nginx cache
Vasil Mikhalenya
bazilek на gmail.com
Пт Фев 12 15:38:08 UTC 2016
проблема все еще воспроизводится с таким конфигом,
location / {
proxy_pass http://origin.example.com;
proxy_set_header Host $proxy_host;
proxy_cache_lock on;
proxy_cache_lock_age 1d;
proxy_cache_lock_timeout 1d;
proxy_cache_revalidate on;
proxy_cache_use_stale updating;
proxy_cache_key "$uri";
add_header Cache $upstream_cache_status;
add_header X-ID "{{ ansible_hostname }}";
}
за пару часов nginx просто съедает >1Tb локального диска, помогает только
остановка nginx, очистка tmp кеша, запуск nginx, иногда делать это нужно
несколько раз
в логах в этот момент
2016/02/11 05:08:42 [crit] 9777#9777: *54423736 cache file
"/var/lib/nginx/cache/c1/9c9de47f28ebc598e526af36d402e8f4" has too long
header, client: 67.11.37.88,
2016/02/11 05:08:44 [crit] 9777#9777: *54423724 cache file
"/var/lib/nginx/cache/c1/9c9de47f28ebc598e526af36d402e8f4" has too long
header, client: 67.11.37.88,
2016/02/11 05:08:44 [crit] 9777#9777: *54423726 cache file
"/var/lib/nginx/cache/c1/9c9de47f28ebc598e526af36d402e8f4" has too long
header, client: 67.11.37.88,
2016/02/11 05:08:44 [crit] 9777#9777: *54423729 cache file
"/var/lib/nginx/cache/c1/9c9de47f28ebc598e526af36d402e8f4" has too long
header, client: 67.11.37.88,
2016/02/11 05:08:44 [crit] 9777#9777: *54423737 cache file
"/var/lib/nginx/cache/c1/9c9de47f28ebc598e526af36d402e8f4" has too long
header, client: 67.11.37.88,
2015-04-30 14:05 GMT+03:00 Vasil Mikhalenya <bazilek на gmail.com>:
> Спасибо, пробуем.
>
> Однако это не совсем очевидно, что во время валидации cache в tmpdir
> начинают появляться файлы на каждый range запрос.
>
> 2015-04-29 14:18 GMT+03:00 Maxim Dounin <mdounin на mdounin.ru>:
>
>> 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 на 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 на 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 mailing list
>> nginx-ru на nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>>
>
>
>
> --
> Best regards,
> Vasil Mikhalenya
>
--
Best regards,
Vasil Mikhalenya
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20160212/def803da/attachment.html>
Подробная информация о списке рассылки nginx-ru