添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
搜索

3.4. 通过增加 I/O 线程提高请求处理吞吐量

download PDF

网络线程处理对 Kafka 集群的请求,如从客户端应用程序生成和获取请求。生成请求放置在请求队列中。响应放置在响应队列中。 每个侦听器的网络线程数量应该反映复制因素以及客户端生产者以及与 Kafka 集群交互的用户级别的活动级别。如果您要有大量请求,您可以增加线程数量,使用的时间线程数量闲置来确定何时添加更多的线程。 为减少拥塞并规范请求流量,您可以限制请求队列中允许的请求数量。当请求队列满时,所有传入流量都会被阻断。 I/O 线程从请求队列获取请求来处理它们。增加更多线程可以提高吞吐量,但 CPU 内核和磁盘带宽的数量会强制实施实际上限。至少,I/O 线程数量应等于存储卷的数量。

# ...
num.network.threads=3 1
queued.max.requests=500 2
num.io.threads=8 3
num.recovery.threads.per.data.dir=4 4
# ...
1
Kafka 集群的网络线程数量。 请求队列中允许的请求数。 Kafka 代理的 I/O 线程数量。 用于在启动和清空时日志加载的线程数量。尝试设置至少一个内核数。 所有代理的线程池的配置更新可能会在集群级别动态发生。这些更新仅限于当前大小和当前大小的两倍。 以下 Kafka 代理指标可帮助操作所需的线程数: kafka.network:type=SocketServer,name=NetworkProcessorAvgIdlePercent 提供平均网络线程闲置的指标,作为百分比。 Kafka .server:type=KafkaRequestHandlerPool,name=RequestHandlerAvgIdlePercent 在平均时间 I/O 线程闲置时提供指标。 如果有 0% 空闲时间,则所有资源都处于使用状态,这意味着添加更多的线程可能很有用。当闲置时间低于 30% 时,性能可能会开始下降。 如果因为磁盘数量造成线程较慢或限制,您可以尝试增加缓冲区的大小,以便增加网络请求以提高吞吐量:

# ...
replica.socket.receive.buffer.bytes=65536