kafka网络使用者的性能问题

h79rfbju  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(336)

使用kafka net.net consumer api,我遇到了一个性能问题(类似于javaapi上的这个问题),看不出我是如何错误配置consumer的。我使用的是wurstmeister-kafka docker容器,在osx上使用docker machine/virtualbox没有修改。发送消息大约需要1毫秒。消耗大约需要950毫秒:

10:58:47,495 DEBUG [Threadpool worker] Kafka Utils [(null)]- >>>>: consuming
10:58:47,498 DEBUG [Threadpool worker] Kafka-net [(null)]- BrokerRouter: Refreshing metadata for topics: microservice.rapids
10:58:47,929 DEBUG [Threadpool worker] Kafka-net [(null)]- Received message of size: 89 From: http://192.168.99.100:9092/
10:58:48,432 DEBUG [Threadpool worker] Kafka-net [(null)]- Awaiting message from: http://192.168.99.100:9092/
10:58:48,436 DEBUG [Threadpool worker] Kafka-net [(null)]- Found address 192.168.99.100 for 192.168.99.100
10:58:48,436 DEBUG [Threadpool worker] Kafka-net [(null)]- Using address 192.168.99.100 for 192.168.99.100
10:58:48,445 DEBUG [Threadpool worker] Kafka Utils [(null)]- <<<<: consuming (950)ms

下面是我如何构建消费者的。

Uri[] urls;
urls = ConfigurationManager.AppSettings ["kafka-urls"]
  .Split (',').Select (s => new Uri (s.Trim ())).ToArray ();
KafkaOptions options = new KafkaOptions (urls);
BrokerRouter router = new BrokerRouter (options);
return new Consumer (new ConsumerOptions (topic, router));

这是我能做的香草味的。
刷新元数据似乎花费了500毫秒。这是不是我可以在brokerrouter的构建过程中提前启动,这样就不会在消费过程中启动了?
有没有其他想法,为什么要花这么长时间,或者如何避免延误?

j5fpnvbx

j5fpnvbx1#

您可以从代理路由器继承并更改getcachedroote。
我认为你想解决的问题对你来说很具体。如果领导者不是你所期望的经纪人,那么时间会更长。尝试使用partitionwhitelist或maxwaittimeforminimumbytes,这样可以加快消耗操作。
它可以在示例化元数据时提取一次元数据,以缓存该元数据,直到它收到指示元数据已过期的错误。此错误有两种形式:(1)套接字错误,表示客户端无法与特定代理通信;(2)请求响应中的错误代码,表示此代理不再承载为其请求数据的分区。

相关问题