为什么我的 Amazon MSK 集群中的使用者滞后较高?

1 分钟阅读
0

我想解决我的 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 集群中的使用者滞后问题。

解决方法

先决条件

运行以下命令以使用 Amazon CloudWatch 指标来确定使用者滞后:

./kafka-consumer-groups.sh --bootstrap-server <broker endpoints> --group <groupid> --describe --command-config <properties>

**注意:**请将 <broker endpoints> 替换为您的代理端点,将 <groupid> 替换为您的组 ID,并将 <properties> 替换为您的属性。

解决与使用者滞后相关的常见问题

确认使用者与分区的比例: 使用者组中的每个使用者根据该组中的可用使用者从分区子集读取数据。如果每个使用者从多个分区消耗,则它可能会处理大量数据并导致滞后。

尽可能将使用者与分区的比例保持在 1:1 左右。如果滞后仍然存在,则增加分区和使用者的数量。

确定离群值: 离群值可能会导致使用者滞后。检查一个使用者分区的贡献是否显著大于使用者组中的其他分区。确定问题来源,以采取相应的解决方案。最后一种选择是重启应用程序。

检查使用者主机上的资源使用情况: 监控使用者应用程序上的资源,观察是否存在资源短缺问题。使用者速度慢会导致消息处理速度慢并导致使用者滞后。

检查使用者组的重新平衡: 在使用者组重新平衡期间,会撤消所有使用者分区分配。因此,使用者会停止读取该主题,这会增加滞后。有关详细信息,请参阅如何解决我的使用者组不断重新平衡的问题?

评估使用者配置: 当生产者写入的速度快于使用者所能读取的速度时,可能会出现使用者滞后。要在生成数据后立即读取数据,请调整使用者配置中的 fetch.min.bytesfetch.partition.min.bytesmax.poll.interval.msmax.poll.records 属性可影响使用者提交其偏移的频率以及一次提取的消息数量。调整这些设置,以帮助减少使用者滞后。

管理消息大小: 消息大小较大可能会导致使用者滞后,尤其是在您的使用者应用程序处理消息的速度较慢时。增加用于处理工作负载的使用者实例的数量。

检查您的应用程序设计: 您的使用者应用程序的设计可能会影响使用者滞后。检查您设计的应用程序是否适合您要处理的消息量。纵向扩展您的应用程序,或优化您的处理逻辑。

监控代理的资源使用情况: 监控代理上的 CPU 使用情况,以检查代理是否超载,导致滞后增加。有关解决 CPU 使用率偏高问题的详细信息,请参阅如何解决 Amazon MSK 集群中一个或多个代理上的 CPU 使用率偏高的问题?

针对工作负载优化集群: 检查是否已针对您的工作负载配置和优化 MSK 集群中的 Kafka 代理。确保您的主题分区在您的代理间均匀分布。确认您的复制因子设置适当。

确定网络延迟: 使用者与 MSK 集群之间的网络延迟较高会导致使用者滞后高。检查您的使用者应用程序和 MSK 集群之间的网络连接。如果连接速度很慢,请将您的使用者应用程序移至更靠近 Kafka 代理的位置。或者,优化您的网络配置。

AWS 官方
AWS 官方已更新 1 年前