有没有更好的方法来分析清漆命中率

我目前正在分析这样的清漆命中率

在这里输入图像说明

虽然这很好,但服务器服务请求的主要部分是不可caching的。 这大大降低了命中率。

在这里输入图像说明

我怎样才能修改这个,我只计算caching的候选请求和计算速度? 我应该看哪个varnishstat指标?

看起来统计信息是准确的,但是你想要一些url不算错过。

这取决于你的意思是不可caching的请求。 如果有一个URL模式,你知道每个URL请求将是唯一的,那么为什么甚至查找该URL或在caching中input后端的响应?

因此,在像sitename.vcl这样的Varnishconfiguration文件中排除要折扣的URL:

sub vcl_recv { # Do not cache following pages if (req.url ~ "^/monitor.*\?heartbeat=") { return (pass); } } 

有关更多信息,请阅读man vcl或查看Varnish wiki上的几个示例。

否则,他们是POST(自动不caching),还是排除在您的.vcl文件?

这不是一个统计问题。 如果你的vcl_recv()返回一个pass或一个error ,那么它不应该算作一个查找或一个未命中(见这里的stream程图),你现有的计算已经是代表性了。

varnishstat -l , varnish文档以及我所看到的可以在Munin中绘制的graphics,没有任何与cache_hit或cache_miss有明显不同的相关计数器。

  s_req = client_req = (cache_hit + s_fetch) s_fetch = cache_miss + s_pass 

所以1 - (s_fetch / s_req)看起来像是比现在更糟糕的命中率,如果还没有,那么计数通过或“不可caching”的页面就会丢失。

(顺便说一下,如果您更改“不可caching”页面的后端,那么我认为Varnish不会计入每个后端的请求数。)

愚蠢的想法:你可以运行logtail varnishncsa.log | grep -c "\(POST\|whateverURLisnoncacheable\)" logtail varnishncsa.log | grep -c "\(POST\|whateverURLisnoncacheable\)"并从你的总失误中减去结果,但是这可能会产生较不准确的结果。