知识库

了解 neo4j-admin 备份的内存配置

当使用 bin\neo4j-admin backup 备份 Neo4j 数据库时,Neo4j 支持建议显式定义备份 JVM 进程要使用的 JVM 堆大小和页面缓存内存。如果未定义这些参数,则在执行 neo4j-admin backup 时,JVM 将分配默认的堆大小,并且页面缓存将使用来自 conf/neo4j.conf 中 dbms.memory.pagecache.size 设置的值。在大多数情况下,conf/neo4j.conf 定义这些参数的方式是消耗超过 60% 的总 RAM。因此,如果 neo4j-admin backup 要为堆和页面缓存分配与正在运行的 Neo4j 进程相同的值,我们将消耗所有可用的 RAM,从而导致备份失败和内存不足的情况。

要为 neo4j-admin backup 指定 JVM 堆,请设置环境变量 HEAP_SIZE,例如

$ export HEAP_SIZE=2G

要为 neo4j-admin backup 指定页面缓存分配,

  • Neo4j 3.3.1 及更高版本 由于 PR 10463 的结果,请通过 --pagecache=XXM 在命令行上指定页面缓存值

    将 XX 替换为要为页面缓存分配的兆字节数。--pagecache 命令行参数会覆盖任何和所有其他在任何 neo4j.conf 文件中定义的页面缓存设置。

  • Neo4j 3.2.x 到 Neo4j 3.3.0

    首先为备份配置文件创建一个特定目录,然后设置环境变量 NEO4J_CONF

$ export NEO4J_CONF=/tmp/backup/

+ 然后,在 /tmp/backup 中创建一个名为 neo4j.conf 的文件,内容如下

dbms.memory.pagecache.size=12G

+ 对于通过 Debian 安装的环境(例如 apt-get install neo4j-enterprise),您还需要添加

dbms.directories.lib=/usr/share/neo4j/lib

+ 到此 neo4j.conf 文件中。

确保 Neo4j 数据库加上备份进程之间的总物理 RAM 不超过服务器上的总物理 RAM。