我正在阅读这个问题Kafka:Continuously getting FETCH_SESSION_ID_NOT_FOUND,我正在尝试应用 Hrishikesh Mishra 建议的解决方案,因为我们也面临类似的问题,所以我增加了代理设置 max.incremental.fetch.session.cache.slots 到2000,默认为 1000。但现在我想知道如何监控已使用的增量获取会话缓存槽的实际数量,在 prometheus 中我看到 kafka_server_fetchsessioncache_numincrementalfetchpartitionscached 指标,并且 promql 查询在三个代理中的每一个上显示的数量现在明显超过 2000,那是 2703、2655 和 2054,所以如果我查看正确的指标,我会感到困惑。还有 kafka_server_fetchsessioncache_incrementalfetchsessionevictions_total 在所有代理上显示零。
好的,还有 kafka_server_fetchsessioncache_numincrementalfetchsessions 在三个代理中的每一个上显示 cca 500,所以总共 cca 1500,在 1000 和 2000 之间,所以也许该指标是由 max.incremental.fetch.session 控制的指标。缓存插槽?
其实截至目前,每个broker上已经有700多个增量fetch session,总共2100多个,所以,很明显,2000的限制适用于每个broker,这样整个集群的数量就可以去到 6000。现在每个 broker 上的数量低于 1000 的原因是因为在配置更改后重新启动了 broker。
问题是如何在个人消费者层面检查这种分配。这样的查询:
count by (__name__) ({__name__=~".*fetchsession.*"})
Run Code Online (Sandbox Code Playgroud)
仅返回此表:
Element Value
kafka_server_fetchsessioncache_incrementalfetchsessionevictions_total{} 3
kafka_server_fetchsessioncache_numincrementalfetchpartitionscached{} 3
kafka_server_fetchsessioncache_numincrementalfetchsessions{} 3
Run Code Online (Sandbox Code Playgroud)
指定的指标kafka.server:type=FetchSessionCache,name=NumIncrementalFetchSessions
是监控 FetchSession 数量的正确方法。
大小可通过max.incremental.fetch.session.cache.slots
. 请注意,此设置适用于每个代理,因此每个代理最多可以缓存max.incremental.fetch.session.cache.slots
会话。
您看到的另一个指标kafka.server:type=FetchSessionCache,name=NumIncrementalFetchPartitionsCached
是所有 FetchSession 中使用的分区总数。许多 FetchSession 将使用多个分区,因此预计会看到更多的分区。
正如您所说,您看到的 FetchSessions 数量很少可能是由于重新启动。
归档时间: |
|
查看次数: |
5695 次 |
最近记录: |