我已将 Varnish 缓存配置为使用 512 MB 的缓存大小,使用方法如下:
varnishd ... -s file,/var/cache/varnish.cache,512M
问题:
- 我如何监控 512 MB 是否太小、太大或是可以接受?
- 如何获取缓存的当前使用大小?
- 如何查看由于缓存已满而从缓存中删除对象的频率?
答案1
我找到了解决方案:
您可以通过运行来监视 Varnish 已分配的最大缓存大小(在本例中为 512 MB)varnishstat
。然后查找输出行“分配的字节数”和“可用字节数”。
存在以下关系:
Command line configuration of max size = [bytes allocated] + [bytes free]
根据“可用字节数”的大小,您可以微调缓存大小以找到合适的级别。
答案2
观察n_lru_nuked
计数器。每次计数器增加时,Varnish 都会从缓存中丢弃一些内容,因为存储空间不足。
理想情况下,您根本不希望 LRU 计数器增加,因为将内容踢出缓存通常意味着必须重新获取它,但如果您的尾部很长,则无法避免 LRU。
答案3
除非您期望所有数据都适合缓存,否则我会查看缓存命中与缓存未命中的比率。您的收益会递减。将缓存加倍可能会使您的未命中率减半,当一半的请求未缓存时,这是一个很大的优势,但当 90% 的请求都未缓存时,优势就不大了。