ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

prometheus对接influxdb压测结果

2022-02-07 11:01:04  阅读:456  来源: 互联网

标签:16c64g 压测 规格 8c32g influxdb prometheus 内存


由于prometheus单纯依靠本地存储远不足以应对长期历史数据持久化,因此依靠influxdb作为远端存储解决以上问题成为一种常见的策略。本次压测的目的为:一方面比较influxdb与prometheus不同规格下的性能指标,另一方面根据不同的性能指标,选出最优的匹配规格供参考,避免出现一端性能浪费以及一端成为瓶颈的情况。

influxdb规格与性能指标

参考[TSDB for InfluxDB规格测试]的结果,四种规格的Influxdb与相应指标如下:

规格 db timeseries tps qps
2c8g 1 50000 40075.7 0.6
4c16g 1 100000 76587.6 0.6
8c32g 1 200000 123871 1.9
16c64g 1 400000 182279.4 2.3

部署prometheus采取两种规格8c32g,16c64g。

为了尽量避免网络延迟对写入性能指标的影响,以上influxdb实例与prometheus实例均处于同一VPC下,通过内网访问,内网带宽峰值:5Gbps

性能摸底:

首次规格匹配选用prometheus(8c32g)与influxdb(16c64g),以influxdb(16c64g)18w的写入性能为标准,使用Avalanche作为数据源,产生18w/s的数据指标用于prometheus拉取并写入远端存储influxdb。
压测数据源采用Avalanche数据源,Avalanche具体配置参数如下:

--avaCount=6 --avaBin=/root/prometheus-avalanche/cmd/avalanche --avaMetricCount=5000 --avaSeriesCount=30 --avaValueInt=5 --avaSeriesInt=360000 --avaMetricInt=3000

测试结果:

内存使用量:

  • 8c32g prometheus
    img
  • 16c64g influxdb

img

以上可见,prometheus占用内存较大,其存储机制为数据每2小时落盘一次,8c32g prometheus内存成为瓶颈,不足以支撑到2小时数据落盘,最终导致prometheus server崩溃。

CPU使用率:

  • 8c32g prometheus

img

  • 16c64g influxdb

img

以上可见,Prometheus cpu占用不大,influxdb cpu使用率近80%,但仍可稳定运行。

网络流入流出速率:

  • 8c32g prometheus

img

  • 16c64g influxdb

img

综上所述:

prometheus cpu占用率不大,对内存需求量大。influxdb相反,内存占用不大,cpu需求量大。网络不是瓶颈,5Gbps带宽远足以支撑数据传输。以上性能摸底结论:8c32g prometheus内存写爆,16c64g influxdb可稳定运行。

prometheus(16c64g)+influxdb(16c64g)

同样以18w/s数据点规格进行写入,稳定运行36h:

内存使用量:

  • prometheus

img

  • influxdb

img

CPU使用率:

  • prometheus

img

  • Influxdb

img

prometheus(8c32g)+influxdb(8c32g)

以9w/s数据点规格进行写入,稳定运行36h:

内存使用量:

  • prometheus

img

  • influxdb

img

CPU使用率:

  • prometheus

img

  • influxdb

img

结论:

本次压测可以看出,prometheus瓶颈在于内存,influxdb的瓶颈在于cpu,内网带宽不是问题,远足以支撑数据传输。为了避免资源浪费,性能输出最大化的条件下,建议使用以下两种规格组合:

  • prometheus(16c64g)+influxdb(16c64g):

在带宽足够,平均label数量小于等于15的条件下,可稳定支持18w/s的写入。

  • prometheus(8c32g)+influxdb(8c32g):

在带宽足够,平均label数量小于等于15的条件下,可稳定支持9w/s的写入。

查询测试:

本次查询测试基于JMeter测试工具,主要通过JMeter支持的HTTP Request任务摸版,模拟多用户并发情景,向Prometheus Server的HTTP API(Localhost:9090/api/vi)发送符合PromQL语义的query,JMeter会搜集相关的query latency等信息。

prometheus(16c64g)+influxdb(16c64g):

  • 1MB/query

img

  • 10MB/query

img

prometheus(8c32g)+influxdb(8c32g)

  • 4MB/query

img

标签:16c64g,压测,规格,8c32g,influxdb,prometheus,内存
来源: https://www.cnblogs.com/vinsent/p/15867231.html

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

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

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

ICode9版权所有