指标参考
在解读不熟悉的指标时,应谨慎小心。建议阅读性能部分,以更好地理解指标。 |
指标类型
Neo4j 具有以下类型的指标
-
全局 — 涵盖整个 Neo4j DBMS。
-
每个数据库 — 涵盖单个数据库。
这些指标属于以下类别之一
-
规格 — 显示特定值的瞬时读数。
-
计数器 — 显示累积值。
-
直方图 — 显示值的分布。
Neo4j 支持多种公开指标的方式。有关更多详细信息,请参阅页面公开指标。
全局指标
全局指标涵盖整个数据库管理系统,并表示整个系统的状态。
全局指标具有以下名称格式
-
<用户配置的前缀>.dbms.<指标名称>
,其中 <用户配置的前缀> 可以使用server.metrics.prefix
配置设置进行配置。
此类型的指标在数据库管理系统可用后立即报告。例如,所有与 JVM 相关的指标都是全局的。特别是,neo4j.dbms.vm.thread.count
指标具有默认用户配置的前缀 neo4j
,全局指标名称为 vm.thread.count
。
默认情况下,全局指标包括
数据库指标
每个数据库指标仅针对特定数据库报告。数据库指标仅在数据库的生命周期内可用。当数据库变得不可用时,其所有指标也将变得不可用。
数据库指标具有以下名称格式
-
<用户配置的前缀>.database.<数据库名称>.<指标名称>
,其中 <用户配置的前缀> 可以使用server.metrics.prefix
配置设置进行配置。
例如,任何事务指标都是数据库指标。特别是,neo4j.database.mydb.transaction.started
指标具有默认用户配置的前缀 neo4j
,并且是 mydb
数据库的指标。
默认情况下,数据库指标包括:
通用指标
Bolt 指标
名称 | 描述 |
---|---|
|
自启动以来打开的 Bolt 连接总数。这包括成功和失败的连接。可用于结合其他指标通过 Bolt 驱动程序监控负载。(计数器) |
|
自启动以来关闭的 Bolt 连接总数。这包括正常和异常结束的连接。可用于结合其他指标通过 Bolt 驱动程序监控负载。(计数器) |
|
当前正在执行 Cypher 并返回结果的 Bolt 连接总数。用于跟踪 Bolt 连接上的总体负载。这受限于通过 |
|
当前未执行 Cypher 或返回结果的 Bolt 连接总数。(规格) |
|
自启动以来通过 Bolt 收到的消息总数。可用于结合其他指标跟踪常规消息活动。(计数器) |
|
自收到以来开始处理的消息总数。接收到的消息可能在 Bolt 工作线程可用之前才开始处理。在 |
|
已完成处理的 Bolt 消息总数,无论成功与否。用于跟踪整体负载。(计数器) |
|
处理过程中失败的消息总数。大量的故障可能表明服务器存在问题,建议进一步调查日志。(计数器) |
|
(不支持的功能)当启用 |
|
工作线程处理消息的总时间(毫秒)。可用于结合其他指标通过 Bolt 驱动程序监控负载。(计数器) |
|
在 5.21 中引入工作线程绑定到给定连接所花费的时间(毫秒)。(直方图) |
|
(不支持的功能)当启用 |
|
(不支持的功能)当启用 |
|
(不支持的功能)当启用 |
Bolt 驱动程序指标
名称 | 描述 |
---|---|
|
托管事务函数调用的总数。(计数器) |
|
非托管事务函数调用的总数。(计数器) |
|
隐式事务函数调用的总数。(计数器) |
|
驱动程序级 execute 函数调用的总数。(计数器) |
数据库检查点指标
名称 | 描述 |
---|---|
|
迄今为止执行的检查点事件总数。(计数器) |
|
迄今为止在检查点花费的总时间(毫秒)。(计数器) |
|
上次检查点事件的持续时间(毫秒)。检查点通常需要几秒到几分钟。长时间的检查点可能是一个问题,因为当数据库停止时、当进行热备份时以及定期也会调用这些检查点。超过 30 分钟左右的值应该引起一些调查。(规格) |
|
在 5.10 中引入在所有检查点事件中累积的刷新字节数。(计数器) |
|
IO 限制器暂停检查点的毫秒数。(规格) |
|
IO 限制器暂停检查点的次数。(规格) |
|
上次检查点事件期间刷新的页面数。(规格) |
|
从 Neo4j 的角度来看,上次检查点事件期间执行的 IO 次数。(规格) |
|
上次检查点事件期间使用的 IO 限制。(规格) |
Cypher 指标
名称 | 描述 |
---|---|
|
Cypher 决定重新规划查询的总次数。Neo4j 默认缓存 1000 个计划。看到持续的重新规划事件或大幅峰值可能表明需要调查的问题。(计数器) |
|
查询重新规划之间等待的总秒数。(计数器) |
数据库数据计数指标
名称 | 描述 |
---|---|
|
数据库中关系的总数。(规格) |
|
数据库中节点的总数。图大小的粗略指标。如果您正在运行批量插入操作,您可以看到此值增加。(规格) |
|
在 5.15 中引入数据库中存储的不同关系类型的内部生成的 ID 总数。这些 ID 不会反映实际数据中的更改。信息性,不是任何问题的指示。(规格) |
数据库 neo4j 池指标
名称 | 描述 |
---|---|
|
使用的或保留的堆内存(字节)。(规格) |
|
使用的或保留的本地内存(字节)。(规格) |
|
使用的堆和本地内存的总和(字节)。(规格) |
|
堆和/或本地内存池容量的总大小。(规格) |
|
池中可用的未使用内存(字节)。(规格) |
数据库操作计数指标
名称 | 描述 |
---|---|
|
成功的数据库创建操作的计数。(计数器) |
|
成功的数据库启动操作的计数。(计数器) |
|
成功的数据库停止操作的计数。(计数器) |
|
成功的数据库删除操作的计数。(计数器) |
|
失败的数据库操作的计数。(计数器) |
|
之前失败但已恢复的数据库操作的计数。(计数器) |
数据库状态计数指标
名称 | 描述 |
---|---|
|
在此服务器上托管的数据库。处于 |
|
在此服务器上处于失败状态的数据库。(规格) |
|
希望在此服务器上启动的数据库。(规格) |
数据库数据指标
在 5.15 中弃用
名称 | 描述 |
---|---|
|
数据库中存储的不同关系类型的内部生成的 ID 总数。这些 ID 不会反映实际数据中的更改。信息性,不是任何问题的指示。(规格) |
|
数据库中存储的不同属性名称的内部生成的 ID 总数。这些 ID 不会反映实际数据中的更改。信息性,不是任何问题的指示。(规格) |
|
数据库中存储的关系的内部生成的可重用 ID 总数。这些 ID 不会反映实际数据中的更改。如果您想获得图大小的粗略指标,请改用 |
|
数据库中存储的节点的内部生成的可重用 ID 总数。这些 ID 不会反映实际数据中的更改。如果您想获得图大小的粗略指标,请改用 |
全局 neo4j 池指标
名称 | 描述 |
---|---|
|
使用的或保留的堆内存(字节)。(规格) |
|
使用的或保留的本地内存(字节)。(规格) |
|
使用的堆和本地内存的总和(字节)。(规格) |
|
堆和/或本地内存池容量的总大小。(规格) |
|
池中可用的未使用内存(字节)。(规格) |
数据库页面缓存指标
名称 | 描述 |
---|---|
|
页面缓存中驱逐过程中遇到的异常总数。(计数器) |
|
页面缓存执行的页面刷新总数。(计数器) |
|
页面缓存执行的页面合并总数。(计数器) |
|
页面缓存执行的页面取消固定总数。(计数器) |
|
页面缓存执行的页面固定总数。(计数器) |
|
页面缓存执行的页面驱逐总数。(计数器) |
|
由于可用页面较少,页面缓存执行的协作页面驱逐总数。(计数器) |
|
5.17 版本引入页面驱逐刷新的页面总数。(计数器) |
|
5.17 版本引入协作页面驱逐刷新的页面总数。(计数器) |
|
页面缓存中的页面错误总数。如果此计数随着时间的推移持续增加,则可能表明需要更多页面缓存。但是,请注意,当 Neo4j Enterprise 启动时,所有页面缓存预热活动都会导致页面错误。因此,在启动后立即观察到大量的页面错误计数是正常的。(计数器) |
|
页面缓存中发生的页面错误失败总数。(计数器) |
|
页面缓存中发生的页面错误取消总数。(计数器) |
|
页面缓存中发生的矢量化页面错误总数。(计数器) |
|
页面缓存中发生的矢量化页面错误失败总数。(计数器) |
|
页面缓存中发生的非页面固定导致的页面错误总数。表示由矢量化错误加载的页面。(计数器) |
|
页面缓存中发生的页面命中总数。(计数器) |
|
页面缓存中命中次数与查找总数的比率。性能依赖于有效使用页面缓存,因此此指标应始终保持在 98-100% 的范围内。如果远低于此值,则表示数据库访问磁盘的频率过高。(仪表盘) |
|
已用页面数与可用页面总数的比率。此指标显示分配的页面缓存的百分比实际使用情况。如果为 100%,则命中率可能会开始下降,您应该考虑为页面缓存分配更多 RAM。(仪表盘) |
|
页面缓存读取的字节总数。(计数器) |
|
页面缓存写入的字节总数。(计数器) |
|
页面缓存执行的 IO 操作总数。(计数器) |
|
在正在进行的 IO 操作期间,页面缓存刷新 IO 限流器被限流的次数。(计数器) |
|
在正在进行的 IO 操作期间,页面缓存刷新 IO 限流器被限流的毫秒数。(计数器) |
|
页面缓存中发生的页面复制总数。(计数器) |
查询执行指标
名称 | 描述 |
---|---|
|
成功执行的查询计数。服务器端路由的查询在最终到达并执行的服务器上对此计数做出贡献,而不是在中间的路由服务器上。(计数器) |
|
失败执行的查询计数。服务器端路由的查询在最终到达并执行的服务器上对此计数做出贡献,而不是在中间的路由服务器上。(计数器) |
|
成功执行的查询的执行时间(毫秒)。(直方图) |
|
并行运行时成功执行的查询计数。服务器端路由的查询在最终到达并执行的服务器上对此计数做出贡献,而不是在中间的路由服务器上。(计数器) |
|
并行运行时失败执行的查询计数。服务器端路由的查询在最终到达并执行的服务器上对此计数做出贡献,而不是在中间的路由服务器上。(计数器) |
|
并行运行时成功执行的查询的执行时间(毫秒)。(直方图) |
|
流水线运行时成功执行的查询计数。服务器端路由的查询在最终到达并执行的服务器上对此计数做出贡献,而不是在中间的路由服务器上。(计数器) |
|
流水线运行时失败执行的查询计数。服务器端路由的查询在最终到达并执行的服务器上对此计数做出贡献,而不是在中间的路由服务器上。(计数器) |
|
流水线运行时成功执行的查询的执行时间(毫秒)。(直方图) |
|
槽位运行时成功执行的查询计数。服务器端路由的查询在最终到达并执行的服务器上对此计数做出贡献,而不是在中间的路由服务器上。(计数器) |
|
槽位运行时失败执行的查询计数。服务器端路由的查询在最终到达并执行的服务器上对此计数做出贡献,而不是在中间的路由服务器上。(计数器) |
|
槽位运行时成功执行的查询的执行时间(毫秒)。(直方图) |
查询路由指标
名称 | 描述 |
---|---|
|
本地执行的查询总数。(计数器) |
|
路由到同一集群中另一个成员的查询总数。(计数器) |
|
路由到集群外部服务器的查询总数。(计数器) |
数据库存储大小指标
名称 | 描述 |
---|---|
|
数据库和事务日志的总大小(字节)。数据库的总大小有助于确定需要多少缓存页面。它还有助于比较数据存储使用的总磁盘空间以及可用空间。(仪表盘) |
|
数据库的大小(字节)。数据库的总大小有助于确定需要多少缓存页面。它还有助于比较数据存储使用的总磁盘空间以及可用空间。(仪表盘) |
|
5.21 版本引入数据库中已保留但可用空间的估计值(字节)。在写入新数据时,至少可以重用这么多空间。(仪表盘) |
数据库事务日志指标
名称 | 描述 |
---|---|
|
迄今为止执行的事务日志轮换总数。(计数器) |
|
迄今为止在轮换事务日志中花费的总时间(毫秒)。(计数器) |
|
上次日志轮换事件的持续时间(毫秒)。(仪表盘) |
|
追加到事务日志的字节总数。(计数器) |
|
事务日志刷新的总数。(计数器) |
|
上次事务追加批处理的大小。(仪表盘) |
数据库事务指标
名称 | 描述 |
---|---|
|
已启动的事务总数。(计数器) |
|
并发事务的最高峰值。这是一个有用的值,可以帮助您了解最高负载场景的设计以及是否应该更改 Bolt 线程设置。(计数器) |
|
当前活动的事务数。信息性,不是任何问题的指示。峰值或大幅增加可能表示大量数据加载或只是高读取负载。(仪表盘) |
|
当前活动读取事务数。(仪表盘) |
|
当前活动写入事务数。(仪表盘) |
|
已提交的事务总数。信息性,不是任何问题的指示。峰值或大幅增加表示大量数据加载或只是高读取负载。(计数器) |
|
已提交的读取事务总数。信息性,不是任何问题的指示。峰值或大幅增加表示高读取负载。(计数器) |
|
已提交的写入事务总数。信息性,不是任何问题的指示。峰值或大幅增加表示大量数据加载,这可能与您正在调查的某些行为相对应。(计数器) |
|
回滚的事务总数。(计数器) |
|
回滚的读取事务总数。(计数器) |
|
回滚的写入事务总数。看到很多写入回滚可能表示锁定、事务超时等各种问题。(计数器) |
|
终止的事务总数。(计数器) |
|
终止的读取事务总数。(计数器) |
|
终止的写入事务总数。(计数器) |
|
上次提交的事务 ID。每个实例跟踪此 ID。(集群)每个主节点和每个辅助节点都跟踪此 ID。可能会拆分为单独的图表。它应该显示一条不断增长的线,如果其中一条线趋于平缓或落后,则表示该成员不再复制数据,需要采取措施纠正这种情况。(计数器) |
|
上次关闭的事务 ID。(计数器) |
|
事务在堆上的大小(以字节为单位)。(直方图) |
|
事务在本地内存中的大小(以字节为单位)。(直方图) |
|
多版本事务验证失败的总数。(计数器) |
数据库索引指标
名称 | 描述 |
---|---|
|
全文索引被查询的总次数。(计数器) |
|
已完成的全文索引填充作业总数。(计数器) |
|
查找索引被查询的总次数。(计数器) |
|
已完成的查找索引填充作业总数。(计数器) |
|
文本索引被查询的总次数。(计数器) |
|
已完成的文本索引填充作业总数。(计数器) |
|
范围索引被查询的总次数。(计数器) |
|
已完成的范围索引填充作业总数。(计数器) |
|
点索引被查询的总次数。(计数器) |
|
已完成的点索引填充作业总数。(计数器) |
|
向量索引被查询的总次数。(计数器) |
|
已完成的向量索引填充作业总数。(计数器) |
特定于集群的指标
发现服务 v1 指标
名称 | 描述 |
---|---|
|
复制的数据结构的大小。(规格) |
|
发现集群成员的大小。(规格) |
|
发现集群无法访问的大小。(规格) |
|
发现集群的收敛。(规格) |
|
发现重启次数。(规格) |
|
发现重启失败次数。(规格) |
发现服务 v2 指标
名称 | 描述 |
---|---|
|
处于活动或可疑状态的成员数量。(规格) |
|
无法访问的集群成员数量。(规格) |
Raft 核心指标
在 5.0 中已弃用
名称 | 描述 |
---|---|
|
Raft 日志的追加索引。每个索引表示为提交而提出的写入事务(可能是内部事务)。这些值大多会增加,但有时由于领导者变更而导致它们会减少。追加索引应始终大于或等于提交索引。(规格) |
|
Raft 日志的提交索引。表示先前追加条目的提交。如果未取消绑定集群状态,则其值会单调递增。提交索引应始终小于或等于追加索引,且大于或等于应用索引。(规格) |
|
Raft 日志的应用索引。表示将已提交的 Raft 日志条目应用于数据库和内部状态。应用索引应始终小于或等于提交索引。此索引与提交索引之间的差异可用于监控 Follower 数据库的最新程度。(规格) |
|
此服务器的 Raft 任期。如果未取消绑定集群状态,则会单调递增。(规格) |
|
事务重试。(计数器) |
|
此服务器是否为领导者?跟踪每个核心集群成员的此指标。如果它不是领导者,则报告 0;如果它是领导者,则报告 1。所有这些指标的总和应始终为 1。但是,在某些瞬态期间,总和可能大于 1,因为多个成员认为自己是领导者。如果指标在 30 秒内显示 0,则可能需要采取措施。(规格) |
|
飞行缓存总字节数。(规格) |
|
飞行缓存最大字节数。(规格) |
|
飞行缓存元素计数。(规格) |
|
飞行缓存最大元素数。(规格) |
|
飞行缓存命中次数。(计数器) |
|
飞行缓存未命中次数。(计数器) |
|
Raft 日志条目预取延迟。(规格) |
|
Raft 日志条目预取总字节数。(规格) |
|
Raft 日志条目预取缓冲区大小。(规格) |
|
Raft 日志条目预取缓冲区异步放入。(规格) |
|
Raft 日志条目预取缓冲区同步放入。(规格) |
|
Raft 消息接收和处理之间的延迟。(规格) |
|
Raft 消息处理的计时器。(计数器,直方图) |
|
Raft 复制请求的总数。它随着写入事务(可能是内部事务)活动的增加而增加。(计数器) |
|
Raft 复制请求尝试的总数。它大于或等于复制请求。(计数器) |
|
失败的 Raft 复制尝试总数。(计数器) |
|
Raft 复制可能计数。(计数器) |
|
成功完成的 Raft 复制请求总数。(计数器) |
|
自上次收到领导者消息以来的时间(以毫秒为单位)。应定期重置。(规格) |
如上表所示,特定于因果集群的指标已弃用。已弃用的 Raft 核心指标将由下表中的 Raft 指标相应替换。 |
Raft 指标
名称 | 描述 |
---|---|
|
Raft 日志的追加索引。每个索引表示为提交而提出的写入事务(可能是内部事务)。这些值大多会增加,但有时由于领导者变更而导致它们会减少。追加索引应始终大于或等于提交索引。(规格) |
|
Raft 日志的提交索引。表示先前追加条目的提交。如果未取消绑定集群状态,则其值会单调递增。提交索引应始终小于或等于追加索引,且大于或等于应用索引。(规格) |
|
Raft 日志的应用索引。表示将已提交的 Raft 日志条目应用于数据库和内部状态。应用索引应始终小于或等于提交索引。此索引与提交索引之间的差异可用于监控 Follower 数据库的最新程度。(规格) |
|
在 5.25 中引入 Raft 日志的头部索引。表示日志中存在的 oldest Raft 索引。修剪事件将增加此值。这可以用于跟踪成员拥有多少 Raft 日志历史记录。(规格) |
|
此服务器的 Raft 任期。如果未取消绑定集群状态,则会单调递增。(规格) |
|
事务重试。(计数器) |
|
此服务器是否为领导者?跟踪集群中每个 Raft 主数据库的此指标。如果它不是领导者,则报告 |
|
飞行缓存总字节数。(规格) |
|
飞行缓存最大字节数。(规格) |
|
飞行缓存元素计数。(规格) |
|
飞行缓存最大元素数。(规格) |
|
飞行缓存命中次数。(计数器) |
|
飞行缓存未命中次数。(计数器) |
|
Raft 日志条目预取延迟。(规格) |
|
Raft 日志条目预取总字节数。(规格) |
|
Raft 日志条目预取缓冲区大小。(规格) |
|
Raft 日志条目预取缓冲区异步放入。(规格) |
|
Raft 日志条目预取缓冲区同步放入。(规格) |
|
Raft 消息接收和处理之间的延迟。(规格) |
|
Raft 消息处理的计时器。(计数器,直方图) |
|
Raft 复制请求的总数。它随着写入事务(可能是内部事务)活动的增加而增加。(计数器) |
|
Raft 复制请求尝试的总数。它大于或等于复制请求。(计数器) |
|
失败的 Raft 复制尝试总数。(计数器) |
|
Raft 复制可能计数。(计数器) |
|
成功完成的 Raft 复制请求总数。(计数器) |
|
自上次收到领导者消息以来的时间(以毫秒为单位)。应定期重置。(规格) |
只读副本指标
在 5.0 中已弃用
名称 | 描述 |
---|---|
|
此实例发出的拉取请求总数。(计数器) |
|
此实例在拉取更新中请求的最高事务 ID。(计数器) |
|
此实例在上次拉取更新中拉取的最高事务 ID。(计数器) |
如上表所示,特定于因果集群的指标已弃用。已弃用的只读副本指标将由下表中的存储副本指标相应替换。 |
Java 虚拟机指标
JVM 指标显示有关垃圾回收的信息(例如,事件数量和垃圾回收花费的时间)、内存池和缓冲区,以及正在运行的活动线程数。它们依赖于环境,因此在不同的硬件和不同的 JVM 配置下可能会有所不同。有关 JVM 内存用量的指标公开了由 MemoryPoolMXBeans 和 BufferPoolMXBeans 提供的值。内存池由 JVM 管理内存,例如 neo4j.dbms.vm.memory.pool.g1_survivor_space
。因此,如有必要,您可以使用 JVM 设置对其进行调整。缓冲池是垃圾回收器管理的内存之外的空间。Neo4j 会根据需要在这些池中分配缓冲区。您可以使用 JVM 设置限制此内存,但您永远没有充分的理由设置它们。
JVM 文件描述符指标
名称 | 描述 |
---|---|
|
当前打开的文件描述符数量。(仪表盘) |
|
(操作系统设置) 打开的文件描述符的最大数量。建议设置为 40K 个文件句柄,因为 Neo4j 使用了原生和 Lucene 索引。如果此指标接近限制,则应考虑提高它。(仪表盘) |
GC 指标
名称 | 描述 |
---|---|
|
累计垃圾回收时间(毫秒)。长时间的 GC 可能表示性能问题或潜在的不稳定性。如果这接近集群中的心跳超时,则可能会导致不需要的领导者切换。(计数器) |
|
垃圾回收的总次数。(计数器) |
JVM 堆指标
名称 | 描述 |
---|---|
|
JVM 保证可用于使用的内存量(以字节为单位)。(仪表盘) |
|
当前使用的内存量(以字节为单位)。这是在给定时间点当前使用的堆空间量。监控此指标以确定您是否始终达到最大值,如果是,则应增加初始堆大小和最大堆大小,或者如果利用率不足,则应减少初始堆大小和最大堆大小。(仪表盘) |
|
可使用的最大堆内存量(以字节为单位)。这是在给定时间点当前使用的堆空间量。监控此指标以确定您是否始终达到最大值,如果是,则应增加初始堆大小和最大堆大小,或者如果利用率不足,则应减少初始堆大小和最大堆大小。(仪表盘) |