系统:阿里云 Ubuntu 16.04.6 LTS
内核:Linux star 4.4.0-170-generic #199-Ubuntu SMP Thu Nov 14 01:45:04 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Neo4j版本:3.3.0
问题:Neo4j运行一段时间后内存占用过多,造成机器内存溢出
解决:
修改配置文件/etc/neo4j/neo4j.conf
修改配置项
1 dbms.memory.heap.initial_size=2048m 2 dbms.memory.heap.max_size=2048m 3 dbms.memory.pagecache.size=3g
其中2048m代表2个G,3g代表3个G,具体设置多少根据自己的情况配置,其中的数值必须时整数,不能有小数点
配置说明
解释:
Page cache
页面缓存用于缓存Neo4j的数据和索引,提升性能,减少硬盘读取
dbms.memory.pagecache.size 用于设置页面缓存最大值
Heap size
堆空间用于查询的执行、事务状态、图形管理等。堆的大小取决于Neo4j的用法.例如,长时间运行的查询或非常复杂的查询比简单查询需要更大的堆空间。
一般情况下,为了提高性能,我们会配置足够大的堆空间来支持并发操作。
如果出现性能问题,我们可能要调整我们的查询语句并且监视它们的内存使用情况,从而决定是否需要增加堆空间。
堆内存大小由dbms.memory.heap.initial_size和dbms.memory.heap.max_size决定。建议将这两个参数设置为相同的值。这将有助于避免不必要的完整垃圾回收暂停。