场景如下:
A 机器上开了一个 kafka 集群,3 个节点。(除 advertised.listeners 外,其余均按照 kafka 的 quickstart 配置)
B 机器上用 librdkafka 写的客户端(照抄官方提供的 demo )。
分配 100 个 topic (已经提前写入一些数据),300 个消费者分成 2 个消费 groupid 平均的连 A 的集群
每个消费者进程 不管是只消费一个 topic,还是消费 100 个 topic,在消费完成,空闲的时候查看 A 机器与 B 机器的流量。
A 机器 进流量 1.3Mb/s 出流量 3Mb/s
疑问:为什么空闲状态下 客户端会占用那么大的带宽?如果消费者和生产者分布在外网,kafka 服务器外网带宽只有 30M 的话,全空闲情况下只能支撑 3000 个客户端?如果有数据,岂不是只能 1000 个都不到了?
是我的使用场景有问题吗?还是哪里可以修改配置?
1
Ariver 2020-06-16 18:01:52 +08:00
抓包看一下。
另外像 kafka,redis 这种默认的使用场景都是局域网吧 |
2
tzhhahaha 2020-06-16 18:26:09 +08:00
看一下线程堆栈都是在干嘛? 一般空闲应该就是 getTopicMetadata 之类的, 没有那么夸张
|
3
hustlibraco 2020-06-16 18:54:48 +08:00
你确定是 kafka 产生的流量吗……
|
4
fannas 2020-06-17 03:59:32 +08:00 via Android
作为消息中间件,你就给 30m 带宽? 如果感觉难度比较高的话,建议买 confluent 订阅
|