文档章节

influxdb continuous queries(cq)从入门到放弃

狗陈
 狗陈
发布于 10/22 20:44
字数 760
阅读 17
收藏 0

从前一篇influxdb的文章prometheus基于influxdb的监控数据持久化存储方案完成之后,就一直在折腾influxdb发布测试和生产环境的问题,经过接近2个月的验证,最终发现使用influxdb自带cq的方案对存储的io要求挺高的。

为什么会说cq对io要求高?是因为进行方案验证时,均是在集成测试和测试的openstack controller节点上进行的测试,刚好这几台主机是配的ssd,非常愉快就完成了POC。但是上线的时候,测试环境申请的openstack的虚拟机,结果发现influxdb一会儿就会重启,重启原因就是influxdb报出oom的异常,同时也有“engine: error syncing wal”的异常

#
Aug 14 18:37:08 sz680961 influxd: fatal error: runtime: cannot allocate memory

Aug 14 18:37:05 sz680961 influxd: ts=2019-08-14T10:37:05.227282Z lvl=info msg="Write failed" log_id=0HFvsoi0000 service=write shard=14 error="engine: error syncing wal"

当时没有想到是io问题导致的,又在controller上建了相同内存32G的influxdb docker进行同时测试,发现以前的测试数据并没有问题,分析差异主要是磁盘io,原因可能是openstack虚拟机使用ceph磁盘,io和本地ssd相差了几个量级,导致cq执行时有大量数据缓存在数据库中,同时又有大量数据插入io响应不过来,最终用完可用的操作系统内存导致进行崩掉。

临近上线,没有更好的方案只能硬着头皮上线,主要原因是1. 生产环境数据比测试环境数据量少,2.如果cq执行还是要导致influxdb崩溃,就先把cq关闭。

就这样留着缺陷上线,观察了一个月偶尔还是存在influxdb oom重启的情况,估计和vmware集群整体的io压力有关。

生产环境的数据量会逐渐增大,这样下去肯定不是办法,但如果不进行降频又满足了长时间存储监控数据的需求,经过新一轮设计和poc制定了变化相对较小的方案:

  1. 关闭influxdb cq
  2. 自行研发跑批python,主要变化就是将cq中一次性加载和计算所有measurement中数据修改为自行控制,依次执行measurement的降频sql

经过poc验证在使用ssd情况下,相同数据量由原cq需要4分钟降低为只需要是30s,而且内存占用跑批前后基本无变化。

如下是开发的跑批日志页面,如果出现跑批失败,还可以进行重跑。

© 著作权归作者所有

狗陈
粉丝 13
博文 73
码字总数 31862
作品 0
成都
高级程序员
私信 提问
饿了么 Influxdb 实践之路

饿了么 Influxdb 实践之路 前言 Influxdb(https://github.com/influxdata/influxdb)是一个基于 golang 编写,没有额外依赖的开源时序数据库,用于记录 metrics、events,进行数据分析。这篇...

憬薇
2018/07/04
0
0
【系统监控架构】InfluxDB 介绍安装及基本使用

InfluxDB的简介 InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。 功能特点 基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等) 可度量性:你...

郭恩洲_OSC博客
07/03
210
0
.NET Core微服务之基于App.Metrics+InfluxDB+Grafana实现统一性能监控

Tip: 此篇已加入.NET Core微服务基础系列文章索引 一、关于App.Metrics+InfluxDB+Grafana 1.1 App.Metrics      App.Metrics是一款开源的支持.NET Core的监控插件,它可以支持跑在.NET ...

Edison Chou
2018/07/29
0
0
prometheus远程存储之influxdb和timescaledb对比测试

写在最前面 看了timescaledb官方的测试文章TimescaleDB比拼InfluxDB:如何选择合适的时序数据库?,发现差异较大的只在存储, 就准备用timescaledb,因为公司有专门的数据库小组,可以对pg进...

狗陈
07/11
303
0
采用 SpringBoot Actuator + InfluxDB + Grafana 实现小平台监控

概述 SpringBoot应用对监控要求不是高,可以采用 SpringBootAdmin就可以搞定,但是如果需要长期,并且希望后期能优化应用,提高平台抗风险性时,可以使用InfluxDB保存应用的性能度量数据。 ...

呼呼南风
06/13
104
0

没有更多内容

加载失败,请刷新页面

加载更多

荣耀笔记本装Win10系统攻略,一文教你快速入门

     荣耀MagicBook科技尝鲜版发布已经有一段时间了,这个预装了Linux版本的笔记本在原来已经极具性价比的基础上又便宜了300元,而荣耀笔记本如何安装Win10系统俨然成为了热门话题。对于...

梅丽莎好
28分钟前
4
0
CentOS7 部署 redis 5.0.6 集群

环境 操作系统: CentOS7.7,关闭 firewalld 和 selinux Redis: 5.0.6 master 实例 10.0.4.110:6371 10.0.4.110:6372 10.0.4.110:6373 slave 实例 10.0.4.111:6371 10.0.4.111:6372 10.0.4.1......

俊赛潘安-才比管乐
今天
45
0
怎么录制电脑上视频素材的声音

随着短视频的不断发展人们越来越喜欢利用空闲时间观看一些短视频用以打发零碎的时间,不少人发现这个机遇也匆匆走上制作短视频的道路,在制作短视频时配音是至关重要的,那你知道怎么在视频素...

cenfeng123
今天
6
0
[springboot 开发单体web shop] 6. 商品分类和轮播广告展示

商品分类&轮播广告 因最近又被困在了OSGI技术POC,更新进度有点慢,希望大家不要怪罪哦。 上节 我们实现了登录之后前端的展示,如: 接着,我们来实现左侧分类栏目的功能。 商品分类|Produc...

IsaacZhang
今天
5
0
java 静态代码块,代码块,构造方法执行顺序

回顾一下java的执行顺序 public class Demo { public Demo() { super(); System.out.println("this is Demo"); } static { System.out.println("this is static"); } { System.out.println("......

漫步行者
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部