性能统计参考

此页面说明了 Solr 公开的某些统计信息。

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

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

请求处理程序统计信息

更新请求处理程序

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

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

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

搜索请求处理程序

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

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

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

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

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

请求时间

具体而言,要获取请求时间,您可以发送类似这样的 API 请求

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

  • http://localhost: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 核心首次创建以来的每秒平均请求数。

错误和其他时间

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

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

  • http://localhost: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

注册处理程序时的纪元时间。

区分内部请求

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

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

  • (将来可以实现更多功能)

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

更新处理程序

本节提供有关添加总数以及针对 Solr 核心触发的提交数的信息。

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

您可以通过 API 请求(例如 http://localhost:8983/solr/admin/metrics?group=core&prefix=UPDATE.updateHandler)获取下表中显示的所有更新处理程序统计信息。

以下描述了您可以获取的具体统计信息

属性 说明

UPDATE.updateHandler.adds

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

UPDATE.updateHandler.autoCommitMaxTime

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

UPDATE.updateHandler.autoCommits

执行的自动提交总数。

UPDATE.updateHandler.commits

执行的总提交数。

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

UPDATE.updateHandler.cumulativeAdds

在生命周期内执行的“有效”添加数。执行“添加”命令时计数器递增,而执行“回滚”时递减。

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

UPDATE.updateHandler.cumulativeDeletesById

在生命周期内按 ID 执行的文档删除数。执行“删除”命令时计数器递增,而执行“回滚”时递减。

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

UPDATE.updateHandler.cumulativeDeletesByQuery

在生命周期内按查询执行的文档删除数。执行“删除”命令时计数器递增,而执行“回滚”时递减。

除了删除计数之外,还提供了平均值、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 文档对象(每个文档的存储字段)。由于 Lucene 内部文档 ID 是瞬态的,因此无法自动预热此缓存。

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

您可以使用 API 请求(例如 http://localhost:8983/solr/admin/metrics?group=core&prefix=CACHE.searcher.documentCache)获取下表中显示的统计信息。

查询结果缓存

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

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

您可以使用 API 请求(例如 http://localhost:8983/solr/admin/metrics?group=core&prefix=CACHE.searcher.queryResultCache)获取下表中显示的统计信息。

过滤器缓存

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

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

您可以使用 API 请求(例如 http://localhost:8983/solr/admin/metrics?group=core&prefix=CACHE.searcher.filterCache)获取下表中显示的统计信息。

缓存统计信息

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

属性 说明

cumulative_evictions

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

cumulative_hitratio

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

cumulative_hits

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

cumulative_inserts

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

cumulative_lookups

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

evictions

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

hitratio

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

hits

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

插入

插入缓存的次数。

查找

针对缓存的查找次数。

大小

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

预热时间

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

当启用按堆使用情况驱逐时,查询结果缓存可使用以下附加统计信息

属性 说明

maxRamMB

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

ramBytesUsed

特定实例中缓存的实际堆使用情况。

evictionsRamUsage

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

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