zoukankan      html  css  js  c++  java
  • influxDB硬件配置指南

    原地址:https://docs.influxdata.com/influxdb/v1.6/guides/hardware_sizing/

    警告!此页面记录了不再积极开发的InfluxDB的早期版本。InfluxDB v1.7InfluxDB的最新稳定版本。

    本指南为InfluxDB提供了一般硬件建议,并解决了有关硬件大小调整的一些常见问题。这些建议仅适用于时间结构合并树(TSM)存储引擎,这是InfluxDB 1.4唯一可用的存储引擎。使用未转换 b1或分bz1运行旧版本InfluxDB的用户可能具有不同的性能特征。有关更多详细信息,请参阅InfluxDB 0.9大小调整指南

    单节点还是群集?

    InfluxDB单节点实例是完全开源的。InfluxDB集群需要我们的闭源商业产品。单节点实例不提供冗余。如果服务器不可用,则写入和查询将立即失败。群集提供高可用性和冗余。多个数据副本分布在多个服务器上,任何一个服务器的丢失都不会对集群产生重大影响。

    如果您的性能要求属于中等低负载范围,那么您可能会使用InfluxDB的单个节点实例。如果您的性能要求中至少有一个属于可能不可行的类别,那么您可能需要使用群集在多个服务器之间分配负载。

    单个节点的一般硬件准则

    我们通过每秒写入的字段数,每秒的查询数以及唯一系列的数量来定义您将在InfluxDB上放置的负载根据您的负载,我们提出一般的CPU,RAM和IOPS建议。

    InfluxDB应该在本地连接的SSD上运行。任何其他存储配置都具有较低的性能特征,并且可能无法从正常处理中的小中断中恢复。

    加载每秒字段写入每秒中等查询次数独特系列
    <5千 <5 <10万
    中等 <25万 <25 <100万
    > 25万 > 25 > 100万
    可能不可行 > 75万 > 100 > 1000万

    注意:查询对系统的影响差异很大。

    简单查询:

    • 几乎没有函数也没有正则表达式
    • 是时间限制在几分钟,几小时或一天
    • 通常在几毫秒到几十毫秒内执行

    中等查询:

    • 有多个函数和一个或两个正则表达式
    • 也可能有复杂的GROUP BY条款或抽样多个星期的时间范围
    • 通常在几百或几千毫秒内执行

    复杂查询:

    • 具有多个聚合或转换函数或多个正则表达式
    • 可以抽样几个月或几年的非常大的时间范围
    • 通常需要多秒才能执行

    低负荷建议

    • CPU:2-4核
    • RAM:2-4 GB
    • IOPS:500

    适度的负载建议

    • CPU:4-6核
    • RAM:8-32 GB
    • IOPS:500-1000

    高负荷建议

    • CPU:8+核心
    • RAM:32+ GB
    • IOPS:1000+

    可能是不可行的负荷

    这种规模的表现是一项重大挑战,可能无法实现。有关调整系统的帮助,请通过sales@influxdb.com与我们联系

    群集的一般硬件准则

    元节点

    群集必须至少有三个独立的元节点才能在丢失服务器后继续存在。具有2n + 1元节点的集群可以容忍元节点的丢失n群集应该具有奇数个元节点。没有理由拥有偶数个元节点,并且它可能导致某些配置出现问题。

    元节点不需要很大的计算能力。无论群集负载如何,我们建议以下元节点:

    普遍推荐

    • CPU:1-2核心
    • RAM:512 MB - 1 GB
    • IOPS:50

    数据节点

    只有一个数据节点的集群有效,但没有数据冗余。冗余由写入数据的保留策略上复制因子设置群集可能会丢失n - 1数据节点并仍然返回完整的查询结果,其中n是复制因子。为了在群集内进行最佳数据分发,InfluxData建议使用偶数个数据节点。

    群集数据节点的硬件建议与独立实例建议类似。数据节点应始终至少具有2个CPU内核,因为它们必须处理常规读写流量以及群集内读写流量。由于群集通信开销,群集中的数据节点处理的吞吐量低于同一硬件上的独立实例。

    加载每个节点每秒写入字段每个节点每秒中等查询每个节点的唯一系列
    <5千 <5 <10万
    中等 <10万 <25 <100万
    > 10万 > 25 > 100万
    可能不可行 > 50万 > 100 > 1000万

    注意:查询对系统的影响差异很大。

    简单查询:

    • 几乎没有函数也没有正则表达式
    • 是时间限制在几分钟,几小时或一天
    • 通常在几毫秒到几十毫秒内执行

    中等查询:

    • 有多个函数和一个或两个正则表达式
    • 也可能有复杂的GROUP BY条款或抽样多个星期的时间范围
    • 通常在几百或几千毫秒内执行

    复杂查询:

    • 具有多个聚合或转换函数或多个正则表达式
    • 可以抽样几个月或几年的非常大的时间范围
    • 通常需要多秒才能执行

    低负荷建议

    • CPU:2个核心
    • RAM:2-4 GB
    • IOPS:1000

    适度的负载建议

    • CPU:4-6
    • 内存:8-32GB
    • IOPS:1000+

    高负荷建议

    • CPU:8+
    • RAM:32+ GB
    • IOPS:1000+

    企业Web节点

    Enterprise Web服务器主要是具有类似负载要求的HTTP服务器。对于大多数应用程序,它不需要非常强大。群集仅与一个Web服务器一起运行,但为了实现冗余,可以将多个Web服务器连接到单个后端Postgres数据库。

    注意:生产集群不应使用SQLite数据库,因为它不允许冗余Web服务器,也不能像Postgres那样优雅地处理高负载。

    普遍推荐

    • CPU:1-4核心
    • RAM:1-2 GB
    • IOPS:50

    我什么时候需要更多内存?

    通常,拥有更多RAM有助于查询返回更快。添加更多RAM没有已知的缺点。

    影响RAM需求的主要组件是系列基数即使有大量RAM,大约1000万或更高的系列基数也可能导致OOM失败。如果是这种情况,您通常可以通过重新设计架构来解决问题

    相对于系列基数的RAM需求的增加是指数的,其中指数在1到2之间:

    系列基数

    我需要什么样的存储空间?

    InfluxDB旨在运行在SSD上。InfluxData不测试硬盘驱动器或网络存储设备,我们不建议将它们用于生产。旋转磁盘驱动器的性能要低一个数量级,即使是中等负载,系统也可能会崩溃。为获得最佳结果,InfluxDB服务器必须在存储系统上至少具有1000 IOPS。

    请注意,当群集从停机时间恢复时,群集数据节点的IOPS要求非常高。建议存储系统至少具有2000 IOPS以便快速恢复。低于1000 IOPS,群集可能无法从短暂停机中恢复。

    我需要多少存储空间?

    数据库名称,度量标记键字段键标记值仅存储一次,并始终作为字符串存储。只有字段值时间戳存储每点。

    非字符串值大约需要三个字节。字符串值需要由字符串压缩确定的可变空间。

    我应该如何配置我的硬件?

    在生产环境中运行InfluxDB时,wal目录和data目录应位于不同的存储设备上。当系统处于大量写入负载时,此优化可显着减少磁盘争用。如果写入负载高度可变,这是一个重要的考虑因素。如果写入负载变化不超过15%,则可能不需要优化。

  • 相关阅读:
    JWT与Session的比较
    Java面试-TCP连接及其优化
    Java面试-动态规划与组合数
    探索Redis设计与实现12:浅析Redis主从复制
    探索Redis设计与实现11:使用快照和AOF将Redis数据持久化到硬盘中
    探索Redis设计与实现10:Redis的事件驱动模型与命令执行过程
    探索Redis设计与实现9:数据库redisDb与键过期删除策略
    探索Redis设计与实现8:连接底层与表面的数据结构robj
    探索Redis设计与实现6:Redis内部数据结构详解——skiplist
    探索Redis设计与实现7:Redis内部数据结构详解——intset
  • 原文地址:https://www.cnblogs.com/zouhao/p/10239754.html
Copyright © 2011-2022 走看看