From 37bad47c0f6c84f31eaabb543cabab83d0444a87 Mon Sep 17 00:00:00 2001 From: childe Date: Thu, 10 Oct 2024 17:26:55 +0800 Subject: [PATCH] modified: README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 89fca8f..d83ab21 100644 --- a/README.md +++ b/README.md @@ -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 值。 ### 自动更新配置