• prometheus对接influxdb压测结果


    由于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

  • 相关阅读:
    mysql基础
    协程
    锁与队列
    线程练习
    线程
    并发编程
    进程
    操作系统发展史
    第六周----例行报告
    附加题找bug
  • 原文地址:https://www.cnblogs.com/vinsent/p/15867231.html
Copyright © 2020-2023  润新知