【发布时间】:2022-01-20 11:06:47
【问题描述】:
我正在尝试配置 fluentd 以将日志发送到不同服务器上的 redis(路径为 fluentbit-fluentd-redis-logstash-elastic),但我无法弄清楚一些性能问题。如果我只将日志保存在磁盘上,一切正常,所有日志都保存(每秒数千个),但是如果我添加 redis_store 部分,相同数量的数据会使 fluentd 慢得多,并且内存仍在增长,直到下次重新启动(天或二)。 我知道这可能是因为输入比输出快,但是如何处理,如何将这么多数据发送到redis?添加更多内存不是解决方案,它只能添加一些时间。是不是因为redis接收不了这么多线程的数据(但是redis没有超载,没有队列)?我不知道这是网络问题(但在这个插件中我不能尝试其他协议?),cpu 问题(cpu 是 cca 70%),还是插件本身? 如果我添加redis插件,与redis的通信太慢了,以至于fluentd不够快并且将数据添加到内存中。
配置
<system>
workers 4
root_dir /fluentd/log/buffer/
</system>
<worker 0-3>
<source>
@type forward
bind 0.0.0.0
port 9880
</source>
<label @TEST>
<match test.**>
@type forest
subtype copy
<template>
<store>
@type file
@id "test-#{worker_id}"
@log_level debug
path "fluentd/log/test-#{worker_id}.*.log"
append true
<buffer>
flush_mode interval
flush_interval 3
flush_at_shutdown true
</buffer>
<format>
@type single_value
message_key log
</format>
</store>
<store>
@type redis_store
host server_ip
port 6379
key test
store_type list
<buffer>
flush_mode interval
flush_interval 3
flush_at_shutdown true
flush_thread_count 4
</buffer>
</store>
</template>
</match>
</label>
</worker>
有什么技巧可以提高 redis 的吞吐量吗? 谢谢
【问题讨论】: