基本指标

为确保应用程序平稳运行,您应监控:

  • 服务器负载 — 托管 Neo4j 的机器的压力。

  • Neo4j 负载 — Neo4j 承受的压力。

  • 集群健康状况 — 确保集群按预期工作。

  • Neo4j 实例的工作负载

建议阅读性能部分,以更好地理解这些指标。

服务器负载指标

监控硬件资源可以显示运行 Neo4j 的服务器所承受的压力。

您可以使用实用工具,例如 Linux 上的 collectd 守护程序或 systemd,来收集系统信息。随着工作负载的增长,这些指标有助于容量规划。

指标名称 描述

CPU 使用率

如果达到 100%,您可能需要额外的 CPU 容量。

已用内存

此指标告诉您是否接近用尽服务器上所有可用内存。请确保峰值在 95% 或以下,以降低内存耗尽的风险。有关更多信息,请参阅内存配置

可用磁盘空间

观察数据增长速度,以便在耗尽存储空间之前规划额外的存储。这适用于 Neo4j 写入的所有磁盘。您也可以选择将日志文件写入不同的磁盘。

磁盘空间不足事件可能会中断系统可用性,并导致数据库离线,从而产生数据库或日志文件损坏的风险。为避免这种情况,应配置系统监控工具以监控用于数据库、索引和事务日志的所有驱动器上的可用磁盘空间。有关更多建议,请参阅磁盘、内存及其他提示,以及 Neo4j 集群中的监控服务器监控数据库

Neo4j 负载指标

Neo4j 负载指标监控 Neo4j 所承受的压力。它们有助于容量规划。

指标名称 指标 描述

堆使用情况

<prefix>.dbms.vm.heap.used

如果 Neo4j 持续使用 100% 的堆,请增加初始和最大堆大小。有关更多信息,请参阅内存配置

页缓存

<prefix>.dbms.page_cache.hit_ratio<prefix>.dbms.page_cache.usage_ratio

当请求未命中页缓存时,数据必须从慢得多的磁盘中获取。理想情况下,命中率 (hit_ratio) 大部分时间应高于 98%。这显示了分配给页缓存的内存使用了多少。如果达到 100%,请考虑增加页缓存大小。

JVM 垃圾回收

<prefix>.dbms.vm.gc.time.%s

JVM 用于回收堆而非执行其他工作的时间比例。当数据库内存不足时,此指标可能会急剧上升。如果发生这种情况,它可能会停止处理并导致查询执行错误。如果出现这种情况,请考虑增加数据库的大小。

检查点时间

<prefix>.database.<db>.check_point.duration

您应该监控检查点持续时间,以确保它不会开始接近检查点之间的间隔。如果发生这种情况,请考虑以下步骤来提高检查点性能:

Neo4j 集群健康指标

集群健康指标可以一目了然地显示集群成员的健康状况。了解哪个实例是领导者至关重要。领导者的负载模式与追随者不同,追随者应表现出相似的负载模式。

指标名称 指标 描述

领导者

<prefix>.database.<db>.cluster.raft.is_leader

为每个数据库主实例跟踪此项。如果它不是领导者,则报告 0;如果是领导者,则报告 1。所有这些的总和应始终为 1。但是,在瞬态期间,总和可能会大于 1,因为有多个成员认为自己是领导者。

事务工作负载

<prefix>.database.<db>.transaction.last_committed_tx_id

上次提交事务的 ID。为每个 Neo4j 实例跟踪此项。它可能会分成单独的图表。它应该显示一条持续增长的线,如果其中一条线趋于平稳或落后,则很明显此实例不再复制数据,需要采取措施纠正这种情况。

有关如何监控集群端点以获取状态信息的更多信息。

工作负载指标

这些指标有助于监控 Neo4j 实例的工作负载。它们的绝对值取决于您预期的工作负载类型。

指标名称 指标 描述

Bolt 连接

<prefix>.dbms.bolt.connections_running

当前正在执行 Cypher 并返回结果的连接数。

总节点/关系数

<prefix>.database.<db>.count.node<prefix>.database.<db>.count.relationship

(默认未启用) 唯一关系类型的总数。唯一属性名称的总数。关系的总数。节点的总数。

吞吐量

<prefix>.database.<db>.db.query.execution.latency.millis

此指标生成 99 和 95 百分位事务延迟的直方图。有助于识别数据负载的峰值或增加。

有关 Neo4j 中所有可用指标的完整列表,请参阅指标参考

© . All rights reserved.