У нас есть два сервера Nginx с независимыми локальными кешами для кеширования изображений. Периодически возникает проблема с неуправляемым увеличением размера кеша. Этот размер может быть намного больше, чем max_size
в nginx.conf
. В результате кеш занимает все свободное место на диске.
Я хочу понять, в чем может быть причина этой проблемы.
Конфигурация кеша прокси (nginx.conf
):
proxy_cache_path /opt2/nginx-cache-images1 max_size=150g levels=2:2 keys_zone=images1:1024m inactive=24h;
proxy_temp_path /opt2/proxy_temp 1 2;
Размер /opt2/nginx-cache-images1
составляет ~ 200 ГБ.
Конфигурация расположения сайта:
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Is-Referer-Search-Engine $is_referer_search_engine;
proxy_hide_header Set-Cookie;
proxy_hide_header Content-Disposition;
proxy_pass http://ua-image-proxy;
default_type image/jpeg;
proxy_cache images1;
proxy_cache_key ua$request_uri$is_referer_search_engine;
proxy_cache_valid 200 24h;
proxy_cache_valid 301 24h;
proxy_cache_valid 404 1h;
}
Версия Nginx: 1.7.7 и 1.7.9. Он был скомпилирован на Ubuntu 14.04.
Для меня это было исправлено в nginx 1.13.1:
Решение: теперь диспетчер кеша игнорирует длинные заблокированные записи кеша при очистке кеша на основе параметра «max_size».