通过Munin监控进行Varnish Cache优化
近期在开发通知的提醒下进行了Varnish3.0.3缓存的优化处理,分析过程使用的是Munin监控数值做的分析,下面将优化过程进行叙述:
一、初期概况
初期做的地图数据缓存,最高命中率在90%,认为命中率很高。后经过日志统计发现,全天的URL总的内存占用在12G,而分配的内存是是36G进行缓存,因此为何无法全部命中?
二、内存参数对比
1# varnishstat -1|grep SMA
2SMA.s0.c_req 5026210 30.84 Allocator requests
3SMA.s0.c_fail 0 0.00 Allocator failures
4SMA.s0.c_bytes 13944480077 85547.91 Bytes allocated
5SMA.s0.c_freed 454443 2.79 Bytes freed
6SMA.s0.g_alloc 5025662 . Allocations outstanding
7SMA.s0.g_bytes 13944025634 . Bytes outstanding
8SMA.s0.g_space 39743065566 . Bytes available
9SMA.Transient.c_req 266 0.00 Allocator requests
10SMA.Transient.c_fail 0 0.00 Allocator failures
对于上述内存参数, SMA.s0.g_space 表示当前可以应用的内存量,如果接近很小说明为缓存分配的内存还是比较小,已经不够使用;如果如上述情况表明内存的分配上已经足够。 SMA.s0.g_bytes 表示的是当前cache实际的内存大小 ( SMA.s0.c_bytes\= SMA.s0.g_bytes +SMA.s0.c_freed ) ,所以 SMA.s0.c_bytes应该为Varnish不断调整分配内存情况,分配的内存要大约实际使用的, SMA.s0.c_bytes我认为属于自动调节的范围,只要小于等于 SMA.s0.g_space 即可。如果命中率低,而内存又使用的很小与提供的部分,那么既有极大的优化空间。
内存的变化通过Munin还是比较直观的:
三、当前缓存缓存的对象数目
当前内存中缓存的object个数受制于TTL的设置比较大(对于不同URL,取同一个object的情况要,修改URL或者域名优化成一个缓存object),可以根据munin的取图每日的变化情况也可以判断缓存的是否优化到最后。
下图是我更改TTL后的前后的一个变化,之前TTL设置的过期是10小时,现在设置的是3天,目前object在内存中的中的数量还是在不断增长中,已经图片2.4M个。
四、通过Munin查看object的过期消失的个数。
从图中可以看出,增加TTL后,目前过期的个数已经到最低点。
五、缓存命中率
如图:
从图中可以看出,命中率目前已经增加到95以上,后前随着缓存object的增加还有继续提高。
总结:
通过Munin进行Varnish的内存监控、过期监控整体进行分析考虑进行优化,避免资源浪费。目前Varnish的第三方工具还是比较少的,技术的成熟预测可以出现自动报告优化点的开源工具出现。
注:以上内容摘自于互联网。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/varnish-cache-optimization/2425.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.