当前位置: 首页 > 知识库问答 >
问题:

Kafka制作者配额和超时异常

柯唯
2023-03-14

我正在尝试提出一种配置,该配置将根据生产者的平均字节率强制实施生产者配额设置。我用一个3节点集群做了一个测试。但是,该主题是使用1个分区和1个复制因子创建的,因此只能为1个代理(leader代理)测量生产者字节率。

我在客户端IDtest_producer_quota将producer_byte_rate设置为20480。

我使用Kafka-生产者-性能-测试来测试吞吐量和油门。

kafka-producer-perf-test --producer-props bootstrap.servers=SSL://kafka-broker1:6667 \
client.id=test_producer_quota \
--topic quota_test \
--producer.config /myfolder/client.properties \
--record.size 2048  --num-records 4000 --throughput -1

我希望producer客户机了解节流阀,并最终平滑发送给代理的请求。相反,我注意到在超过30秒的时间内,有98秒/秒和21秒/秒的交替throghput。在这段时间内,平均延迟缓慢增加,最后当它达到120000毫秒时,我开始看到超时异常,如下所示

组织。阿帕奇。Kafka。常见的错误。TimeoutException:自批创建以来,配额测试-0的7条记录已过期:120000毫秒。

是什么导致了这个问题?

  1. 当延迟达到120秒(delivery.timeout.ms的默认值)时,生产商正在超时
  2. 为什么生产商不了解节流阀和配额,以及减速或后退其他生产商配置有助于缓解超时问题

共有1个答案

壤驷俊逸
2023-03-14

(2048*4000)/20480=400(秒)

这意味着,如果您的生产者试图全速发送4000条记录(这是因为您将吞吐量设置为-1),那么它可能会批处理它们并将其放入队列中。取决于您的CPU)。

然后,由于配额设置(20480),您可以确保代理不会在至少399或398秒之前“完成”对这4000条记录的处理。

The broker does not return an error when a client exceeds its quota, but instead attempts to slow the client down. The broker computes the amount of delay needed to bring a client under its quota and delays the response for that amount of time. 

您的请求。超时。ms被设置为120秒,则会出现此timeoutException。

 类似资料:
  • 我们的生产环境中出现了随机的和: 我们偶尔会在我的生产者日志中得到这个异常: 主题:XXXXXX:5608 ms的过期记录自批量创建加上逗留时间以来已经过去。 此类错误消息中的毫秒数不断变化。有时是5秒,有时是13秒! 我们很少能得到: 集群由3个经纪人和3个动物园管理员组成。生产者服务器和Kafka集群在同一个网络中。 我在打同步电话。有一个web服务,多个用户请求调用它来发送数据。Kafka

  • 我让Kafka连接JDBC接收器连接器写入各种数据库,我想节流到一个数据库的流量。Kafka配额功能可以为客户端ID设置配额,但Kafka连接客户端ID类似于,并动态分配给连接器。因此,如果我的接收器连接器重新平衡,它将被分配所有新的客户端ID。我尝试使用接收器连接器使用者组ID作为客户端ID来设置配额,但这不起作用。有没有办法为一个Kafka连接的消费群体设定一个配额?

  • 我对Kafka很陌生,我想了解配额制是如何为Kafka工作的。 到现在为止我一直在跟踪这里的文件 bin/kafka-configs.sh--zookeeper 10.11.10.2:2181--alter--add-config'producer_byte_rate=1024,consumer_byte_rate=1024'--实体类型客户端--实体名称客户端A 我还使用以下命令来测量Kafka

  • 我们在生产方面面临以下问题: 是因为无效的配置,如批量大小、请求超时或其他原因吗?

  • 我当前运行的是Kafka0.10.0.1,两个值的对应文档如下: heartbeat.interval.ms-在使用Kafka的组管理设施时,向消费者协调器发送心跳的预期间隔时间。heartbeat用于确保消费者的会话保持活动,并在新消费者加入或离开组时促进重新平衡。该值必须设置为低于session.timeout.ms,但通常不应设置为高于该值的1/3。可以调得更低,以控制正常再平衡的预期时间。

  • 我正在使用Spring Boot版本2.1.9。带有Web、会话、安全、jdbc和jpa启动器的RELEASE。在我的应用程序中一切正常,直到我尝试覆盖默认会话超时值,application.properties中有以下行: 如果添加这一行,在启动Spring时,我会得到以下错误: 我还尝试了不同的格式,如180s或PT180S,但都不起作用。根据Spring文档或同一文档的其他变体,只有整数的版