调查 Karafka 服务器中的超时:CPU 利用率、内存利用率、max.poll.interval.ms

问题描述 投票:0回答:1

我有一个rails应用程序,其中包括API服务器(rails服务器)和Worker服务器(Kaafka服务器)。

我们从 API 服务器发送一些消息到主题 T1(只有 1 个分区),现在 Worker 服务器使用此消息,基于此我们获取一个文件(这将有一个标题行,后面跟着一些值行,大约来自 SFTP 的500,000记录),现在经过一些处理后,我们将文件中的每条记录保存到数据库并将这些记录发送到主题T2(有10个分区)。现在,工作服务器再次从该主题消费,进一步处理每条记录并将其发送到目标主题T3。 这是应用程序的整体工作原理。我们使用 Worker 服务器的多个实例进行并行处理(请注意,并行处理在使用来自 T2 的消息时非常有用)。

现在在生产中出现问题,T1 消费者中的一条消息超时,Karafka 再次重试。 我需要知道为什么会发生超时,所以我在较低的环境中测试了相同的情况,但无法复制该场景。 Karafka 配置中的

max.poll.interval.ms
设置为相当大的数量,并且超时发生在该内部之前。我在生产中也看不到任何错误日志。我检查了 newrelic 上较低环境的系统资源利用率。 Worker 服务器的 CPU 利用率为 100%,持续几分钟,最大内存利用率为 30%。在较低的环境中,每个步骤都已成功处理。

我的疑问是,如果不是因为

max.poll.interval.ms
,是什么导致了这次超时,会不会是因为CPU利用率100%?最初我的假设是由于内存限制而超时。

rails 版本:

7.0.8.1
, 卡拉夫卡版本:
2.1.11

如果需要任何其他详细信息,请告诉我。谢谢。

ruby-on-rails apache-kafka timeout cpu-usage karafka
1个回答
0
投票

我不确定你所说的“超时”是什么意思。 Karafka 有很多超时,首先,我们应该确定你是否在谈论:

  • 生产者等待超时
  • Broker 传输失败(传输)
  • 最大轮询间隔超时
  • 网络异常
  • 或者完全不同的东西

你不清楚这个。

源自 Karafka 的每个错误都有描述并且属于特定类别。错误日志应该对发生的情况有准确的解释。

现在回答你的其余问题:

我需要知道为什么会超时

检查日志。

我在生产中也看不到任何错误日志

Kaafka 将每个错误记录到同一个管道中。如果你找不到错误,说明你的错误跟踪不正确。

难道是因为CPU利用率100%的原因?

如果你的CPU总是被充分利用,Kaafka可能会发生奇怪的事情。与大多数其他软件相同。 Karafka 是一个多线程软件,可以在后台运行许多东西。许多与套接字等相关的超时可能已经开始。尽管如此,日志应该有它。如果不这样做,要么是我提到的日志记录很差,要么是机器过载到无法存储日志的程度。

另外,请记住您运行的是过时版本的 Karafka。 2.1.1 已经有 2.4.0,有许多修复和改进。

© www.soinside.com 2019 - 2024. All rights reserved.