列出Varnish缓存的内容?

20
有没有一种方法可以列出varnish缓存存储的内容?另外,以某种方式列出最常见的缓存命中会很好。我找到了一种方法来查看最常见的缓存未命中,即通过列出发送到后端的内容:
varnishtop -b -i TxURL

能够查看我顶级缓存命中的URL将非常有用。

编辑:我正在使用版本:varnish-3.0.3修订版9e6a70f


你使用的是哪个版本的Varnish? - mrege
varnishd (varnish-3.0.3 修订版9e6a70f) - Martin Taleski
2个回答

22

我认为你可以使用varnishncsa的参数"Varnish:hitmiss"来帮助解决问题。

首先,使用以下命令捕获日志样本:

varnishncsa -F '%U%q %{Varnish:hitmiss}x' -n NAME -w /path/requests.logs

然后,运行以下命令:

sort -k 1 /path/requests.logs | uniq -c | sort -k 1 -n -r | head -25


3

这个功能没有包含在Varnish中,但是您可以很容易地添加一些脚本来实现。

  • 首先,您需要将varnishncsa作为服务启动,并将输出写入每日文件。
  • 然后将至少%{Varnish:hitmiss}x%U添加到默认输出格式(请参见varnishncsa 文档
  • 最后,编写一些脚本以计算您的顶级URL,例如下面的内容:
# we admit %{Varnish:hitmiss}x is the first column and %U the second
awk '$0 ~ / hit / { arr[$8]=arr[$8]+1 }END{ for(k in arr) { print arr[k]";"k } }' varnishncsa.log|sort -k 1 -nr |head

随意根据您的特定需求进行更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接