VictoriaMetrics 1.73.1 值得关注的新特性

作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


VictoriaMetrics 1.73.1 的changelog: https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.73.1
重点关注的是cache的配置:
VictoriaMetrics 1.73.1 值得关注的新特性

在之前的版本,vm-storage中几个关键的cache大小,是根据用户配置的内存占用量(或者百分比)来动态决定比例的:
see: https://github.com/ahfuzhang/victoria-metrics-1.72.0/blob/5b88c993cb742fe4e03e622819a726d9f2b874cb/VictoriaMetrics-1.72.0-cluster/lib/storage/storage.go#L218

	mem := memory.Allowed()
	s.tsidCache = s.mustLoadCache("MetricName->TSID", "metricName_tsid", int(float64(mem)*0.35)) // 如果存在缓存的文件   // 最多使用可用内存的 35% 来缓存TSID
	s.metricIDCache = s.mustLoadCache("MetricID->TSID", "metricID_tsid", mem/16)  // 加载这些文件
	s.metricNameCache = s.mustLoadCache("MetricID->MetricName", "metricID_metricName", mem/10)

MetricName 是一个完整的 time series的label name + label value的数据, tsid是这个metric对应的存储层的唯一ID.
这些关键缓存决定了搜索性能,在特定的场合,把这些缓存配置得更大能够取得更好的收益。具体的场景是:

  1. 历史节点,只读不写,那么就可以分配更多内存来用于关键数据的缓存;
  2. 在需要遍历大量time series的情况,比如vm-alert发起的告警查询,那么加大缓存也可能会增加收益。

因此:

  1. 需要观测vm-storage的缓存上报数据,来决定要如何优化缓存;see: Cache tuning
  2. 根据数据来优化缓存配置.
上一篇:Binding(四):数据校验


下一篇:VictoriaMetrics v1.36.0 的一些新功能