ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Influxdb1.5版本 占CPU高 和 内存高问题

2021-10-20 16:02:56  阅读:512  来源: 互联网

标签:cache series 压缩 Influxdb1.5 influxdb wal 内存 CPU


1、关闭上传报告给Influxdb 

     reporting-disabled = false

2、配置相关的

#wal日志落盘周期,官方建议0-100ms
  #尝试了100ms,50ms,20ms之后,目前折中采用50ms
  wal-fsync-delay = "50ms"
  #使用tsi1索引
  index-version = "tsi1"
  #分片允许最大内存,当超过最大内存会拒绝写入
  #内存越大,多个新老分片会占用更多的堆空间
  cache-max-memory-size = "2g"
  #当cache超过128m时,会进行快照落盘
  cache-snapshot-memory-size = "128m"
  #cache冷冻写入时间
  cache-snapshot-write-cold-duration = "30m"
  #进行全量压缩时间
  #由于retention policy为72小时
  #超过72小时,可以认为不进行全量压缩
  compact-full-write-cold-duration = "80h"
  #并行压缩处理器
  max-concurrent-compactions = 8
  #说明: 压缩TSM数据,一次落盘的吞吐量
  #默认48m
  #修改为64m
  #[优化点]:增大写入量,减轻io压力
  compact-throughput = "64m"
  #压缩每秒最大落盘数据量
  compact-throughput-burst = "16m"

  #wal日志超过128m时会被压缩为索引文件,并删除
  max-index-log-file-size = "128m"
3、查询超时时间要设置 默认一直等待 按实际需求设置 针对CPU高的

query-timeout = "60s"

4、Series 是占内存的大户,

influxdb中,series是一个很重要的概念,它是retentionPolicy、measurement、tag set雷同的汇合,蕴含了监控对象的元数据信息,series的数量=RP*measurement*tag set。

一般来讲,监控对象稳固后,series根本是固定的;influxdb将series放在内存作为索引,放慢了数据查问,这使得series的数量不能太大,否则influxdb内存会被撑爆,默认单个database内series限度为<100W个

第一,通过合理地规划,来减少不必要的tag。如果某个tag的值分布非常的多,可以考虑下它是否有必要作为tag,是不是作为field更合适。

第二,通过设置保留策略,保留更少的数据。influxdb是时序数据库,主要被用来存储监控数据,可以根据具体场景来保留更短的数据,这样的话会有一些旧数据由于过期而被清理掉,从而减少series的数量

查询命令语句
show series from measurements

influxdb本身提供了一些针对调试的支持,通过下面的接口返回的数据,可以分析出所有数据库的series数量

http://localhost:8086/debug/vars

在返回的数据中,每个数据库都会出现下面的数据,numSeries就是series的数量

查阅了相关资料之后,整理了influxdb使用tsi索引时原理图:

 

说明:

写入influxdb时,会同时写wal文件及cache内存, wal用于宕机恢复cachecache在达到配置中的阈值时,会进行snapshot快照,进行落盘influxdb的series及index索引会在内存中全量保存,用于快速检索wal文件大小在达到配置中阈值时,会进行压缩转换到index索引influxdb会对磁盘数据文件{{index+data}}按照分片shard维度进行四次压缩(level1,2,3及full),以节约磁盘空间

标签:cache,series,压缩,Influxdb1.5,influxdb,wal,内存,CPU
来源: https://blog.csdn.net/Crazy2910/article/details/120867611

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有