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


偶然发现vm-storage的监控里有这样一个指标:vm_slow_row_inserts_total,能够体现慢插入的次数。

由此做了一个慢插入的报表:

  • 分子:sum by () (rate(vm_slow_row_inserts_total{tenant=~"$tenant",namespace=~"$namespace",env_name=~"$env_name",pod_name=~"${cluster}.+"}))
  • 分母:sum by () (rate(vm_new_timeseries_created_total{tenant=~"$tenant",namespace=~"$namespace",env_name=~"$env_name",pod_name=~"${cluster}.+"}))

vm_slow_row_inserts_total是怎么产生的呢?我梳理了一下流程。

主要是这一行:

// VictoriaMetrics-1.72.0-cluster/lib/storage/storage.go:1800
func (s *Storage) add(){
if s.getTSIDFromCache(&r.TSID, mr.MetricNameRaw) { // 如果是已经存在的TSID
// fast path
}
// slow path
// 在这个分支下插入的ts都会记录到 vm_slow_row_inserts_total
}

再看s.getTSIDFromCache()函数,其实就是从 s.tsidCache 这个缓存对象中查询。

tsidCache的key是整个序列化后的 metric, value是tsid。

  • 全新的metric必然不在这个cache,因此单位时间的vm_slow_row_inserts_total必然大于等于每分钟新增的time series(也就是vm_new_timeseries_created_total这个指标体现的内容)
  • 如果旧的metric不在cache里,就只能通过LSM Tree去查询,必然是慢的。

问题来了,为什么旧的metric不在tsidCache里?

看看tsidCache的初始化,老的版本是可用内存的35%,新的版本中可以通过参数配置。

storage.cacheSizeStorageTSID参数可以配置这个cache的大小。

如果time series的总数太多,占满了这个cache,必然导致cache miss.

最后的结论是:

1.如果流失率不高,可以调高这个cache的大小,这样就能减少vm_slow_row_inserts_total的数量

2.如果流失率高,调高这个cache意义不大。我觉得可以把-retentionPeriod的时间改短,短到这个周期内的大多数time sereis都能被cache住。

如何减缓vm中慢插入的次数的更多相关文章

  1. Entity Framework 6 Recipes 2nd Edition(10-9)译 -> 在多对多关系中为插入和删除使用存储过程

    10-9. 在多对多关系中为插入和删除使用存储过程 问题 想要在一个无载荷的多对多关系中使用存储过程(存储过程只影响关系的连接表) 解决方案 假设有一个多对多关系的作者( Author)表和书籍( B ...

  2. 整数中1出现的次数(从1到n整数中1出现的次数)

    题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.AC ...

  3. (原创)VM中的CentOS6.4中安装CloudStack6.3②

    接着VM中的CentOS6.4中安装CloudStack6.3①中文章接着,往下面安装 4.更新 yum 仓库 默认情况下,CentOS的软件源中没有收录最新版本CloudStack,为了能顺利安装, ...

  4. 剑指Offer:面试题32——从1到n整数中1出现的次数(java实现)

    问题描述: 输入一个整数n,求1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11,12,1一共出现了5次. 思路:(不考虑时间效率的解法,肯定不 ...

  5. vm中centos7配置静态ip访问外网

    我使用的是桥接方式,具体步骤如下   1.设置虚拟机网络: 编辑>虚拟网络编辑器   2.设置vm中操作系统的网络设置   3.进入centos7中后修改网络配置:     另附我的宿主机网络配 ...

  6. 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)

    题目1373:整数中1出现的次数(从1到n整数中1出现的次数) 题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他 ...

  7. 剑指Offer 整数中1出现的次数(从1到n整数中1出现的次数)

    题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...

  8. 【编程题目】在从 1 到 n 的正数中 1 出现的次数

    30.在从 1 到 n 的正数中 1 出现的次数(数组)题目:输入一个整数 n,求从 1 到 n 这 n 个整数的十进制表示中 1 出现的次数.例如输入 12,从 1 到 12 这些整数中包含 1 的 ...

  9. 25.在从1到n的正数中1出现的次数[NumberOf1Between1_N]

    [题目] 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. [分析] 这是一道广为流传的goo ...

  10. 161102、MyBatis中批量插入

    方法一: <insert id="insertbatch" parameterType="java.util.List"> <selectKe ...

随机推荐

  1. Spring Boot CMD 运行日志输出中文乱码

    Spring Boot 在Windows CMD 中运行,日志输出中文乱码name="CONSOLE" 设置成 charset utf-8 ,在windows cmd 中运行时,l ...

  2. Intellij 查找排除JAR包的依赖关系(Maven Helper)

    Intellij 查找排除JAR包的依赖关系(Maven Helper) 安装插件 Windows 类似

  3. 用 Python 开发了一个 PDF 抽取Excel表格的小工具

    大家好哇 从 PDF 里 copy 表格时,粘贴出来后格式都是错乱的.这麻烦事交给 Python 再合适不过里,我开发了一个从 PDF 抽取表格另存为 Excel 文件的应用,我把它部到 huggin ...

  4. 最被低估的Python绘图库!Matlplotlib 超强实力鉴赏

    最被低估的Python绘图库!Matlplotlib 超强实力鉴赏 Matplotlib Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量 ...

  5. 又强大了,LiteFlow里程碑版本2.8.0发版注记!全新的DSL会惊艳到你吗?

    一 New version! 2.8.0 go!!! 这是我在提交中央仓库前写下的简短description.我希望这个版本能把LiteFlow带向更远的地方. 曾经在半年前就计划的新的DSL计划,但 ...

  6. 【LibCurl】HomeBrew 安装 LibCurl & CMake 配置

    LibCurl 在官网中明确指出支持 HomeBrew 进行安装. 那么在 macOS 端的安装就不会想 Win 下需要根据版本进行编译了,方便许多 brew install curl # 安装完成后 ...

  7. Android NativeCrash 捕获与解析

    Android 开发中,NE一直是不可忽略却又异常难解的一个问题,原因是这里面涉及到了跨端开发和分析,需要同时熟悉 Java,C&C++,并且需要熟悉 NDK开发,并且解决起来不像 Java异 ...

  8. Spring Boot Serverless 实战系列“部署篇” | Mall 应用

    导读:SpringBoot 是基于 Java Spring 框架的套件,它预装了 Spring 的一系列组件,让开发者只需要很少的配置就可以创建独立运行的应用程序.在云原生的世界里,有大量的平台可以运 ...

  9. 【调试】sysRq按键使用方法

    SysRq键简介 SysRq键是一个魔术案件,只要在内核没有完全卡死的情况下,内核都会相应SysRq 键的输入,使用这些组合键都可以搜集包括系统内存使用.CPU任务处理.进程运行状态等系统运行信息. ...

  10. React报错之The tag is unrecognized in this browser

    正文从这开始~ 总览 当我们使用一个在浏览器中不存在的标签或以小写字母开头的组件名称时,会产生"The tag is unrecognized in this browser"Re ...