性能统计参考

此页面解释了 Solr 公开的一些统计信息。

有两种方法可以检索指标。首先,您可以使用指标 API,或者您可以启用 JMX 并从MBean 请求处理程序或通过 JConsole 等外部工具获取指标。以下描述侧重于使用指标 API 检索指标,但如果使用 MBean 请求处理程序或外部工具,则指标名称是相同的。

这些统计信息是按核心计算的。当您在 SolrCloud 模式下运行时,这些统计信息将与单个副本的性能相关。

请求处理程序统计信息

更新请求处理程序

更新请求处理程序是向 Solr 发送数据的端点。我们可以看到正在触发多少更新请求,它的执行速度有多快,以及有关请求的其他有价值的信息。

注册表和路径: solr.<core>:UPDATE./update

您可以使用 API 请求(例如 https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=UPDATE)请求更新请求处理程序的统计信息。

搜索请求处理程序

可用于衡量和跟踪搜索查询的数量、响应时间等。如果您未使用“select”处理程序,则需要适当更改路径。类似地,如果您使用“sql”处理程序或“export”处理程序,实时处理程序“get”,或者任何其他处理程序,也可以找到类似的统计信息。

注册表和路径: solr.<core>:QUERY./select

您可以使用 API 请求(例如 https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=QUERY./select)请求 /select 请求处理程序的统计信息。

请求处理程序的常用统计信息

所有更新和搜索请求处理程序都会提供以下统计信息。

请求时间

要获取请求时间,特别是,您可以发送如下 API 请求:

  • https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=UPDATE./update.requestTimes

  • https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=QUERY./select.requestTimes

属性 描述

15minRate

过去 15 分钟内每秒收到的请求数。

5minRate

过去 5 分钟内每秒收到的请求数。

p75_ms

属于第 75 个百分位的请求的请求处理时间。例如,如果收到 100 个请求,则此统计信息将报告第 75 个最快的请求时间。

p95_ms

属于第 95 个百分位的请求的请求处理时间(以毫秒为单位)。例如,如果收到 100 个请求,则此统计信息将报告第 95 个最快的请求时间。

p999_ms

属于第 99.9 个百分位的请求的请求处理时间(以毫秒为单位)。例如,如果收到 1000 个请求,则此统计信息将报告第 999 个最快的请求时间。

p99_ms

属于第 99 个百分位的请求的请求处理时间(以毫秒为单位)。例如,如果收到 100 个请求,则此统计信息将报告第 99 个最快的请求时间。

count

自首次创建 Solr 核心以来发出的请求总数。

median_ms

所有请求处理时间的中位数。

meanRate

自首次创建 Solr 核心以来每秒收到的平均请求数。

错误和其他时间

还提供其他类型的数据,例如错误和超时。 这些数据在不同的指标名称下可用。 例如

  • https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=UPDATE./update.errors

  • https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=QUERY./select.errors

下表显示了要请求的指标名称和属性

指标名称 描述

QUERY./select.errors UPDATE./update.errors

处理程序遇到的错误数。除了错误计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

QUERY./select.clientErrors UPDATE./update.clientErrors

客户端在发出请求时产生的语法或解析错误数。除了错误计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

QUERY./select.requests UPDATE./update.requests

此处理程序收到的请求数。

QUERY./select.serverErrors UPDATE./update.serverErrors

服务器在执行请求时抛出的错误数。除了错误计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

QUERY./select.timeouts UPDATE./update.timeouts

收到部分结果的响应数。除了超时事件的计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

QUERY./select.totalTime UPDATE./update.totalTime

自启动 Solr 进程以来所有请求处理时间的总和(以纳秒为单位)。

QUERY./select.handlerStart UPDATE./update.handlerStart

注册处理程序时的 Epoch 时间。

区分内部请求

在 SolrCloud 中处理大型集合的单个请求需要向其他副本(通常在其他节点上)发出额外的请求。内部请求表面上看起来很相似(相同的处理程序),但它们执行的是总体任务的一部分。区分这些请求非常重要!当请求为其他请求做出贡献时,Solr 会使用不同的处理程序名称跟踪这些处理程序上的指标。

  • 查询:/select 查询的内部请求将作为 /select[shard] 进行跟踪。从技术上讲,这发生在 SearchHandler 及其子类上。

  • (将来可以对更多内容进行检测)

Solr 的 Prometheus 导出器配置将处理程序上的此后缀提取到名为 "internal" 的标签。配置 Grafana 或其他指标工具时,请务必根据要分析的内容过滤这些指标。

更新处理程序

本节包含有关添加总数以及已对 Solr 核心触发的提交次数的信息。

注册表 & 路径: solr.<core>:UPDATE.updateHandler

您可以使用类似 https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=UPDATE.updateHandler 的 API 请求获取下表中显示的所有更新处理程序统计信息。

以下描述了您可以获取的特定统计信息

属性 描述

UPDATE.updateHandler.adds

自上次提交以来的“添加”请求总数。

UPDATE.updateHandler.autoCommitMaxTime

两次自动提交执行之间的最大时间。

UPDATE.updateHandler.autoCommits

执行的自动提交总数。

UPDATE.updateHandler.commits

执行的总提交次数。

除了提交计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

UPDATE.updateHandler.cumulativeAdds

在整个生命周期内执行的“有效”添加次数。执行 “add” 命令时计数器会递增,执行 “rollback” 命令时计数器会递减。

除了添加计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

UPDATE.updateHandler.cumulativeDeletesById

在整个生命周期内按 ID 执行的文档删除次数。执行 “delete” 命令时计数器会递增,执行 “rollback” 命令时计数器会递减。

除了删除计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

UPDATE.updateHandler.cumulativeDeletesByQuery

在整个生命周期内按查询执行的文档删除次数。执行 “delete” 命令时计数器会递增,执行 “rollback” 命令时计数器会递减。

除了删除计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

UPDATE.updateHandler.cumulativeErrors

在整个生命周期内对文档执行添加/删除操作时收到的错误消息数。

除了错误计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

UPDATE.updateHandler.deletesById

当前未提交的按 ID 删除。

UPDATE.updateHandler.deletesByQuery

当前未提交的按查询删除。

UPDATE.updateHandler.docsPending

待提交的文档数。

UPDATE.updateHandler.errors

在核心的整个生命周期内对文档执行添加/删除/提交/回滚操作时收到的错误消息数。

UPDATE.updateHandler.expungeDeletes

发出的带有清除删除的提交命令数。

除了清除删除的计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

UPDATE.updateHandler.merges

发生的索引合并次数。

除了合并计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

UPDATE.updateHandler.optimizes

发出的显式优化命令数。

除了优化计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

UPDATE.updateHandler.rollbacks

执行的回滚次数。

除了回滚计数之外,还提供平均值、1 分钟、5 分钟和 15 分钟的速率。

UPDATE.updateHandler.softAutoCommitMaxTime

两次软自动提交之间最大的文档“添加”数。

UPDATE.updateHandler.softAutoCommits

执行的软提交次数。

缓存统计信息

文档缓存

此缓存保存 Lucene Document 对象(每个文档的存储字段)。 由于 Lucene 内部文档 ID 是瞬态的,因此无法自动预热此缓存。

注册表和路径: solr.<core>:CACHE.searcher.documentCache

您可以使用类似 https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=CACHE.searcher.documentCache 的 API 请求获取下表中显示的统计信息。

查询结果缓存

此缓存保存以前搜索的结果:根据查询、排序和请求的文档范围排序的文档 ID 列表

注册表和路径: solr.<core>:CACHE.searcher.queryResultCache

您可以使用类似 https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=CACHE.searcher.queryResultCache 的 API 请求获取下表中显示的统计信息。

过滤器缓存

此缓存用于匹配查询的所有文档的无序集合的过滤器。

注册表和路径: solr.<core>:CACHE.searcher.filterCache

您可以使用类似 https://127.0.0.1:8983/solr/admin/metrics?group=core&prefix=CACHE.searcher.filterCache 的 API 请求获取下表中显示的统计信息。

缓存的统计信息

以下统计信息可用于上述每个缓存

属性 描述

cumulative_evictions

自此节点运行以来,所有缓存的缓存驱逐次数。

cumulative_hitratio

自此节点运行以来,所有缓存的缓存命中数与查找数的比率。

cumulative_hits

自此节点运行以来,所有缓存的缓存命中数。

cumulative_inserts

自此节点运行以来,所有缓存的缓存插入次数。

cumulative_lookups

自此节点运行以来,所有缓存的缓存查找次数。

evictions

当前索引搜索器的缓存驱逐次数。

hitratio

当前索引搜索器的缓存命中数与查找数的比率。

hits

当前索引搜索器的命中数。

inserts

插入到缓存中的次数。

lookups

针对缓存的查找次数。

size

该特定实例中缓存中的条目数。

warmupTime

注册的索引搜索器的预热时间(以毫秒为单位)。 此时间用于缓存的“自动预热”。

启用堆使用率驱逐时,以下附加统计信息可用于查询结果缓存

属性 描述

maxRamMB

缓存应使用的最大堆大小,超过此大小将驱逐键。

ramBytesUsed

该特定实例中缓存的实际堆使用率。

evictionsRamUsage

当前索引搜索器的缓存驱逐次数,因为堆使用率超过了 maxRamMB。

有关 Solr 缓存的更多信息,请参阅 缓存和查询预热 部分。