5

我正在使用 nginx 缓存对我的 uwsgi 后端的请求

uwsgi_cache_path /var/cache/nginx/uwsgi keys_zone=cache:15M max_size=5G;

我的后端设置了一个很长的过期标题(1 年以上)。但是,当我的系统运行时,我看到缓存达到 15M。它上升到那个水平,然后修剪到 10M。

这会导致对我的后端进行大量不必要的调用。当我更改 keys_zone 大小时,它似乎控制了整个缓存的大小。它似乎忽略了 max_size 而是替换了 keys_zone 大小。(*)

谁能解释这种行为?此版本中是否存在已知错误?我错过了重点吗?我不想将 5G 分配给缓存管理器..

# nginx -V
nginx version: nginx/1.2.0
built by gcc 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
TLS SNI support enabled
configure arguments: --conf-path=/etc/nginx/nginx.conf --pid-path=/var/run/nginx.pid --user=www-data --group=www-data --with-http_ssl_module --with-http_stub_status_module

(*) 更新:我想这是我试图在混乱中找到模式的过度活跃的想象力。

4

1 回答 1

5

Expires 标头(和其他一些标头)由 nginx 来确定响应是否可缓存,但它不用于确定缓存多长时间。

默认情况下,您的非活动缓存将在 10 分钟后被删除。你能增加这个数字,看看它是否有影响吗?

proxy_cache_path 路径 [levels=levels] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time];

在 inactive 参数指定的时间内未访问的缓存数据将从缓存中删除,无论其新鲜度如何。默认情况下,非活动设置为 10 分钟。

参考: http: //nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path

于 2013-04-09T23:57:02.010 回答