不需要的恢复到原来的 dbms.memory.heap.max_size

Meh*_*ran 3 neo4j

我在 docker (v. 3.1.0) 中使用 Neo4j。当我遇到错误时,我尝试使用单个查询更新整个数据库:

没有足够的内存来执行当前任务。请尝试在 Neo4j 配置中增加 'dbms.memory.heap.max_size'(通常在 'conf/neo4j.conf' 中,或者,如果您使用的是 Neo4j Desktop,可以通过用户界面找到)或者如果您正在运行嵌入式安装使用“-Xmx”命令行标志增加堆,然后重新启动数据库。

所以我去设置配置文件条目:

dbms.memory.heap.initial_size=512M
dbms.memory.heap.max_size=512M
Run Code Online (Sandbox Code Playgroud)

我给了他们两个 2048M(正如我在这里读到的那样,这两个更匹配)。但是在保存并重新启动 docker 后,条目将恢复为 512M 的原始值。为了确保这不是 docker 问题,我在配置中写了一些注释行,并且它仍然存在。这意味着 Neo4j 有意恢复了这些值。但为什么?这是docker强加的限制吗?因为我的硬件有足够的内存!

Dav*_*ett 5

如果您使用的是标准 docker 镜像,/docker_entrypoint.sh则会根据环境变量设置内存或默认为 512M。

setting "dbms.memory.heap.initial_size" "${NEO4J_dbms_memory_heap_maxSize:-512M}"
setting "dbms.memory.heap.max_size" "${NEO4J_dbms_memory_heap_maxSize:-512M}" 
Run Code Online (Sandbox Code Playgroud)

当你实例化你的 docker 容器时,添加--env NEO4J_dbms_memory_heap_maxSize=2048到命令中。