Skip to content

Commit

Permalink
modified: README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
childe committed Oct 10, 2024
1 parent c6a0b32 commit 37bad47
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,15 +101,15 @@ Add:
默认是一个线程
--worker 4
--worker 1
使用四个线程(goroutine)处理数据. 每个线程拥有自己的filter, output. 比如说translate filter, 每个线程有自己的字典, 他们占用多份内存. elasticsearch output也是一样的, 如果每个 elasticsearch 设置了2并发, 那一共就是8个并发.
使用一个线程(goroutine)处理数据. 每个线程拥有自己的filter, output. 比如说translate filter, 每个线程有自己的字典, 他们占用多份内存. elasticsearch output也是一样的, 如果每个 elasticsearch 设置了2并发, 那一共就是8个并发.
进一步说明一下为什么添加了这个配置:
最开始是没有这个配置的, 如果需要多线程并发处理数据, 依赖 Input 里面的配置, 比如说 Kafka 配置 `topicname: 2` 就是两个线程去消费(需要 Topic 有至少2个Partition, 保证每个线程可以消费到一个 Partition 里面的数据).
如果一个 Kafka Topic 只有一个分区,那最多只有能有一个 Gohanout 去消费。因为后续的数据处理流程都在一个线程中,可能会有 CPU 瓶颈(比如 Grok 正则匹配等),这种情况下,可以通过增加 worker 提升数据处理能力。
但是后面出现一些矛盾, 比如说, Kafka 的 Consumer 个数多的情况下, 给 Kafka 带来更大压力, 可能导致 Rebalance 更频繁等. 所以如果 Kafka 消费数据没有瓶颈的情况下, 希望控制尽量少的 Consumer, 后面多线程的处理这些数据.
在 k8s 环境下,建议将 worker 配置成 CPU limit 值。
### 自动更新配置
Expand Down

0 comments on commit 37bad47

Please sign in to comment.