评估 InfluxDB 集群在 AWS 上的写入性能

导航至

在针对 InfluxData 进行各种基准测试时,我们决定还探索使用我们的闭源 InfluxDB Enterprise 产品扩展 InfluxDB 集群的各个方面,主要是通过写入性能的角度。 除了帮助为用户在实际环境中对写入性能的期望建立一些粗略的指导原则之外,这些数据还应证明对评估 InfluxDB Enterprise 是否适合其用例的开发人员和架构师有价值。 要阅读基准测试和方法的完整详细信息,下载 “评估 InfluxDB 集群在 AWS 上的写入性能”技术论文,或观看题为:“集群创建和差异如何影响性能”的录制视频我们进行此基准测试的目标是创建一个一致的、最新的比较,以反映 InfluxDB 和 InfluxDB Enterprise 的最新发展。 我们将定期重新运行这些基准测试,并使用我们的发现更新本文档。 所有这些基准测试的代码都在 GitHub 上可用。 如果您有任何问题、意见或建议,请随时在该存储库上打开问题或拉取请求。 现在,让我们看一下结果...

测试版本

InfluxDB Enterprise:v1.1.0 InfluxDB 是用 Go 编写的开源时间序列数据库。 其核心是名为 Time-Structured Merge (TSM) Tree 的定制存储引擎,该引擎针对时间序列数据进行了优化。 InfluxDB 由名为 InfluxQL 的自定义类 SQL 查询语言控制,为跨时间范围的数学和统计函数提供开箱即用的支持,非常适合自定义监控和指标收集、实时分析以及物联网和传感器数据工作负载。

关于基准测试

在构建此基准测试套件时,我们确定了几个与扩展写入性能最相关的参数。 正如我们将在下面更详细地描述的那样,我们研究了跨三个向量的性能
  1. 数据节点数
  2. 复制因子
  3. 批处理大小
这些趋势相对简单明了。 我们预计吞吐量会随着更多数据节点和更大的批处理大小而增加,并随着更高的复制因子而降低(因为复制因子意味着数据必须在整个集群中多次写入)。

关于数据集

对于此基准测试,我们专注于一个数据集,该数据集模拟了常见的 DevOps 监控和指标用例,其中服务器群定期以固定的时间间隔报告系统和应用程序指标。 我们每 10 秒对 9 个子系统(CPU、内存、磁盘、磁盘 I/O、内核、网络、Redis、PostgreSQL 和 Nginx)中的 100 个值进行采样。 对于关键比较,我们查看了一个数据集,该数据集代表了 24 小时内 10,000 台服务器,这代表了一个相当规模的生产部署。 我们还提供了一些关于这些比较如何随着更大的数据集(包括持续时间和服务器数量)扩展的信息。
  • 服务器数量:1,000
  • 每个服务器测量的数值:100
  • 测量间隔:10 秒
  • 数据集持续时间:24 小时
  • 数据集中的总数值:8,640,000,000/天
这只是整个基准测试套件的一个子集,但它是一个具有代表性的示例。 如果您对更多详细信息感兴趣,可以在 GitHub 上阅读有关测试方法的更多信息。

写入性能

InfluxDB Enterprise 可水平扩展以进行写入,显示最多 32 个数据节点的吞吐量增加 showing throughput increases for up to 32 datanodes 为了获得最大的写入性能,请确保每个数据节点使用多个并发工作线程。 multiple concurrent workers per data node 使用更大的批处理大小通常会增加集群的总写入吞吐量。 Sustained Write Throughput

 

总结

基准测试和结果数据表明,沿着这些向量,InfluxDB Enterprise 通常应该

  • 使用更多数据节点实现更高的写入吞吐量
  • 使用更高的复制因子实现更低的写入吞吐量
  • 使用更大的批处理大小实现更高的写入吞吐量
最令人兴奋的是,我们证明了 32 节点 InfluxDB Enterprise 集群能够处理超过 1110 万次/秒的单副本写入,以及超过 930 万次/秒的双副本写入。 相比之下,即使在性能最高的硬件上,InfluxDB 的单节点通常也只能达到略低于 100 万次/秒的峰值性能。 我们强烈建议开发人员和架构师自己运行这些基准测试,以独立验证其硬件和选择的数据集上的结果。 但是,对于那些正在寻找有效起点以了解哪些设置将有助于优化写入性能的用户,这些结果应作为扩展和优化 InfluxDB Enterprise 集群的有用指南。

下一步是什么