kafka消费者滞后增加太多
kafka consumer lag increases too much
我们有 10 个经纪人,最近他们中的许多人收到“打开的文件太多”错误。然后经纪人死了。我们查看kafka进程打开的文件数,一般是70k以上。在检查(lsof -p {pid})时,kafka 打开的大多数文件的名称都是“无法识别协议”。重启后,我们查看主题的滞后,它增加了一个巨大的数量,如果以前是 8 亿,现在它变成了 100 亿。
第一个问题:为什么经纪人要打开所有这些文件?过去没有这个问题,我们也没有升级或更改 kafka 版本。
第二个问题:为什么在这么短的时间内,延迟增加了这么多?
对于kafka,主题分区映射到磁盘上的日志文件。所以随着topic/partitions数量的增加,kafka访问的文件数量也会增加。您可以增加打开文件数的限制(在 linux 上通常由 ulimit 决定)。
预计会出现滞后增长,因为经纪人上下波动可能会对消费者产生潜在影响,因为它可能会触发消费者之间的再平衡,这将停止消费,直到再平衡完成(假设复制,对生产者的影响通常可以忽略不计)。至于滞后量,这取决于您的生产者吞吐量。
例如,如果您的生产者每秒产生 100 msgs,而您的重新平衡需要 1 分钟,则您已经累积了 6000 的滞后。需要深入研究消费者日志以了解消费者被阻止的原因以及持续多长时间。然后需要将其与生产者吞吐量进行映射以证明滞后数字是合理的。
我们有 10 个经纪人,最近他们中的许多人收到“打开的文件太多”错误。然后经纪人死了。我们查看kafka进程打开的文件数,一般是70k以上。在检查(lsof -p {pid})时,kafka 打开的大多数文件的名称都是“无法识别协议”。重启后,我们查看主题的滞后,它增加了一个巨大的数量,如果以前是 8 亿,现在它变成了 100 亿。
第一个问题:为什么经纪人要打开所有这些文件?过去没有这个问题,我们也没有升级或更改 kafka 版本。
第二个问题:为什么在这么短的时间内,延迟增加了这么多?
对于kafka,主题分区映射到磁盘上的日志文件。所以随着topic/partitions数量的增加,kafka访问的文件数量也会增加。您可以增加打开文件数的限制(在 linux 上通常由 ulimit 决定)。
预计会出现滞后增长,因为经纪人上下波动可能会对消费者产生潜在影响,因为它可能会触发消费者之间的再平衡,这将停止消费,直到再平衡完成(假设复制,对生产者的影响通常可以忽略不计)。至于滞后量,这取决于您的生产者吞吐量。
例如,如果您的生产者每秒产生 100 msgs,而您的重新平衡需要 1 分钟,则您已经累积了 6000 的滞后。需要深入研究消费者日志以了解消费者被阻止的原因以及持续多长时间。然后需要将其与生产者吞吐量进行映射以证明滞后数字是合理的。