0

InfluxDB优化配置项

 1 year ago
source link: https://blog.51cto.com/u_536410/5399323
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

时序数据库InfluxDB

InfluxDB是一个用于存储和分析时间序列数据的开源数据库。也是使用最多的一个时序数据库。

常见选项的默认配置 (influxdb.conf)

# 禁止报告开关,默认 每 24 小时往 usage.influxdata.com 发送报告
reporting-disabled = false
# 用于备份和恢复的 RPC 服务的绑定地址
bind-address = "127.0.0.1:8088"

[meta]
# 元数据存储目录
dir = "/var/lib/influxdb/meta"
# retention policy 自动创建开关
retention-autocreate = true
# 元数据服务日志开关
logging-enabled = true

[data]
# 数据目录
dir = "/var/lib/influxdb/data"
# 预写日志目录(write ahead log)
wal-dir = "/var/lib/influxdb/wal"
# fsync 调用之前的写等待时间,默认为 0s,SSD 设置为 0s,非 SSD 推荐设置为 0ms-100ms
wal-fsync-delay = "0s"
# inmem 内存索引(需要大量内存),tsi1 基于磁盘的时序索引
index-version = "inmem"
# 查询日志开关
query-log-enabled = true
# 分片缓存在拒绝 /write 请求前能写入的最大内存大小,默认为 1g
cache-max-memory-size = "1g"
# tsm 引擎将快照缓存并将其写入 tsm 文件的缓存大小,完成后释放内存
cache-snapshot-memory-size = "25m"
# 持续一段时间后,如果分片没有收到写入或删除,tsm 引擎将对缓存进行快照并将其写入新的 TSM 文件
cache-snapshot-write-cold-duration = "10m"
# 持续一段时间后,如果 tsm 引擎未收到写入或删除,tsm 引擎将压缩分片中的所有 TSM 文件
compact-full-write-cold-duration = "4h"
# tsm 压缩每秒写入磁盘的最大数据量,短暂突发期间可以被设置为 compact-throughput-burst
compact-throughput = "48m"
# tsm 压缩在短暂突发期间每秒写入磁盘的最大数据量
compact-throughput-burst = "48m"
# 最大并发压缩数,默认值 0 会将 50% 的 CPU 核心数用于压缩
max-concurrent-compactions = 0
# inmem 设置项:在删除写入之前每个数据库允许的 series 的最大数量,设置 0 则不限制
max-series-per-database = 1000000
# inmem 设置项:每个 tag 键允许的 tag 值的最大数量,设置 0 则不限制
max-values-per-tag = 100000
# tsi1 设置项:预写日志 wal 文件将压缩为索引文件时的阈值大小
# 较小的阈值将导致日志文件更快地压缩,并导致较低的堆内存使用量,但会以写入吞吐量为代价
# 更大的阈值将不会频繁地压缩,在内存中存储更多的 series,并提供更高的写入吞吐量
max-index-log-file-size = "1m"
# tsi1 设置项:tsi 索引中用于存储先前计算的 series 结果的内部缓存大小
# 缓存结果将从缓存中快速返回,而不需要对匹配 tag 键值的后续查询进行重新计算
# 将此值设置为 0 将禁用缓存,这可能会导致查询性能问题
series-id-set-cache-size = 100

[coordinator]
# 写入请求超时时间
write-timeout = "10s"
# 最大并发查询数,默认值 0 表示不限制
max-concurrent-queries = 0
# 在终止查询之前允许执行查询的最长持续时间,默认值 0 表示不限制
query-timeout = "0s"
# 慢查询的最大持续时间,一个查询超出该时间将打印 Detected slow query 日志
# 默认值 0s 表示不记录慢查询
log-queries-after = "0s"

[retention]
# 执行保留策略并淘汰旧数据开关
enabled = true
# 执行保留策略的检查时间间隔
check-interval = "30m0s"

[monitor]
# 内部记录统计信息开关,生产环境中若数据量较大,建议关闭
store-enabled = true
# 记录统计信息的数据库
store-database = "_internal"
# 记录统计信息的时间间隔
store-interval = "10s"

[http]
# http 开关
enabled = true
# http 绑定地址
bind-address = ":8086"
# 认证开关
auth-enabled = false
# http 请求日志
log-enabled = true
# 详细写入日志开关
write-tracing = false
# flux 查询开关
flux-enabled = false
# flux 查询日志开关
flux-log-enabled = false
# pprof http 开关,用于故障排除和监控
pprof-enabled = true
# 启用 /pprof 端点并绑定到 localhost:6060,用于调试启动性能问题
debug-pprof-enabled = false
# https 开关
https-enabled = false
# https 证书
https-certificate = "/etc/ssl/influxdb.pem"
# https 私钥
https-private-key = ""
# 查询返回的最大行数,默认值 0 允许无限制
max-row-limit = 0
# 最大连接数,超过限制的新连接将被丢弃,默认值 0 禁用限制
max-connection-limit = 0
# 客户端请求 body 的最大大小(以字节为单位),设置为 0 则禁用限制
max-body-size = 25000000
# 访问日志路径,若设置并当 log-enabled 启用时,请求日志将写入到该文件
# 默认则写入 stderr,与 influxdb 日志混合在一起
access-log-path = ""
# 请求记录状态过滤,例如 ["4xx", "5xx"],默认 [] 表示无过滤,所有请求被记录打印
access-log-status-filters = []
# 最大并发处理的写入数,设置为 0 则禁用限制
max-concurrent-write-limit = 0
# 最大排队等待处理的写入数,设置为 0 则禁用限制
max-enqueued-write-limit = 0
# 写入在待处理队列中等待的最大持续时间
# 设置为 0 或将 max-concurrent-write-limit 设置为 0 则禁用限制
enqueued-write-timeout = "30s"

[logging]
# 日志等级,error、warn、info(默认)、debug
level = "info"

重点配置 (cpu/内存/磁盘io/超时/日志)

# 禁用报告,默认为 false
reporting-disabled = true

[meta]
# 元数据存储目录
dir = "/var/lib/influxdb/meta"

[data]
# 数据目录
dir = "/var/lib/influxdb/data"
# 预写日志目录(write ahead log)
wal-dir = "/var/lib/influxdb/wal"
# fsync 调用之前的写等待时间,默认为 0s,SSD 设置为 0s,非 SSD 推荐设置为 0ms-100ms
# 若要降低磁盘 io,则适当调大
wal-fsync-delay = "20ms"
# inmem 内存索引(需要大量内存),tsi1 基于磁盘的时序索引,默认为 inmem
index-version = "tsi1"
# 查询日志开关,可视情况关闭
query-log-enabled = true
# 分片缓存在拒绝 /write 请求前能写入的最大内存大小,默认为 1g
# 若服务器内存较小,则适当调小;若要降低磁盘 io,则适当调大
cache-max-memory-size = "1g"
# tsm 引擎将快照缓存并将其写入 tsm 文件的缓存大小,完成后释放内存,默认为 25m
# 若服务器内存较小,则适当调小;若要降低磁盘 io,则适当调大
cache-snapshot-memory-size = "25m"
# 持续一段时间后,如果分片没有收到写入或删除,tsm 引擎将对缓存进行快照并将其写入新的 TSM 文件,默认为 10m
# 若要降低 cpu 压缩计算和磁盘 io,则适当调大,但避免时间过长一直占用内存
cache-snapshot-write-cold-duration = "10m"
# 持续一段时间后,如果 tsm 引擎未收到写入或删除,tsm 引擎将压缩分片中的所有 TSM 文件,默认为 4h
# 若要降低 cpu 压缩计算和磁盘 io,则适当调大,例如 24h
compact-full-write-cold-duration = "24h"
# tsm 压缩每秒写入磁盘的最大数据量,默认为 48m
# 若要降低磁盘 io,则适当调大
compact-throughput = "48m"
# tsm 压缩在短暂突发期间每秒写入磁盘的最大数据量,默认为 48m
# 若要降低磁盘 io,则适当调大
compact-throughput-burst = "48m"
# 最大并发压缩数,默认值 0 会将 50% 的 CPU 核心数用于压缩
# 若要降低 cpu 压缩计算和磁盘 io,则适当调小,但避免过小导致压缩周期变长
max-concurrent-compactions = 0
# tsi1 设置项:预写日志 wal 文件将压缩为索引文件时的阈值大小
# 较小的阈值将导致日志文件更快地压缩,并导致较低的堆内存使用量,但会以写入吞吐量为代价
# 更大的阈值将不会频繁地压缩,在内存中存储更多的 series,并提供更高的写入吞吐量
# 若要降低 cpu 压缩计算和磁盘 io,则适当调大,但避免过大导致一直占用内存
# 若服务器内存较小,则适当调小或保持不变
max-index-log-file-size = "1m"
# tsi1 设置项:tsi 索引中用于存储先前计算的 series 结果的内部缓存大小
# 缓存结果将从缓存中快速返回,而不需要对匹配 tag 键值的后续查询进行重新计算
# 将此值设置为 0 将禁用缓存,这可能会导致查询性能问题
# 若服务器内存较小,则适当调小
series-id-set-cache-size = 100

[coordinator]
# 写入请求超时时间,默认为 10s
write-timeout = "20s"

[monitor]
# 内部记录统计信息开关,生产环境中若数据量较大,会影响内存及cpu,建议关闭
store-enabled = true
# 记录统计信息的时间间隔,生产环境中若数据量较大,但需要开启监控,则调大间隔
store-interval = "10s"

[http]
# http 请求日志,可视情况关闭
log-enabled = true

[logging]
# 日志等级,error、warn、info(默认)、debug,可视情况调整等级
level = "info"

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK