Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 卡夫卡网络消费者的性能问题_.net_Performance_Apache Kafka_Kafka Consumer Api - Fatal编程技术网

.net 卡夫卡网络消费者的性能问题

.net 卡夫卡网络消费者的性能问题,.net,performance,apache-kafka,kafka-consumer-api,.net,Performance,Apache Kafka,Kafka Consumer Api,使用kafka net.net consumer API时,我遇到了性能问题(与Java API上的问题类似),看不出我是如何错误配置consumer的。我使用的是Wurstmeister Kafka Docker容器,未在OSX上使用Docker machine/virtualbox进行修改。发送消息大约需要1毫秒。消耗大约需要950毫秒: 10:58:47,495 DEBUG [Threadpool worker] Kafka Utils [(null)]- >>>>

使用kafka net.net consumer API时,我遇到了性能问题(与Java API上的问题类似),看不出我是如何错误配置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
这是我能做的最香草的

500毫秒似乎用于刷新元数据。在BrokerRouter的构建过程中,我是否可以提前启动此功能,以便在消费过程中不执行此功能


还有什么其他想法可以解释为什么需要这么长时间,或者如何避免延迟?

您可以从Broker Router继承并更改GetCachedRoote

我认为你想解决的问题对你来说非常具体。 如果领导者不是经纪人,那么你预计时间会更长。 尝试使用PartitionWhitelist或MaxWaitTimeForminMumbytes,这样可以加快消耗操作

它可以在实例化元数据时提取元数据一次,以缓存该元数据,直到收到指示元数据已过期的错误。此错误有两种形式:(1)套接字错误,表示客户端无法与特定代理通信;(2)请求响应中的错误代码,表示此代理不再承载请求数据的分区


您可以从代理路由器继承并更改GetCachedRoote

我认为你想解决的问题对你来说非常具体。 如果领导者不是经纪人,那么你预计时间会更长。 尝试使用PartitionWhitelist或MaxWaitTimeForminMumbytes,这样可以加快消耗操作

它可以在实例化元数据时提取元数据一次,以缓存该元数据,直到收到指示元数据已过期的错误。此错误有两种形式:(1)套接字错误,表示客户端无法与特定代理通信;(2)请求响应中的错误代码,表示此代理不再承载请求数据的分区


这听起来更像是一个评论。也许你可以澄清一下。这听起来更像是一个评论。也许您可以澄清一下。我最近遇到了一些问题,并通过确保我连接到的Uri指定了协议和IP地址而不是主机名来解决这些问题,例如:使用http作为协议的新Uri(“tcp://“+ipAddressString+”:“+port”)最近出现了一些问题,并通过确保我连接到的Uri指定了协议和IP地址而不是主机名来管理解决这些问题,例如:使用http作为协议的新Uri(“tcp://“+ipAddressString+”:“+port”)对我来说从来都不起作用
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));