赞
踩
我结合实际工作情况,聊一下Neo4j的性能优化。我这里在Neo4j存储了5个节点和5个边,数据量如下:
31530628 nodes
48336920 relationships
77437758 properties
Estimated number of nodes: 47.63 M
Estimated number of node properties: 110.14 M
Estimated number of relationships: 69.47 M
Estimated number of relationship properties: 149.30 M
Estimated disk space usage: 12.46 GB
Estimated required memory usage: 1.58 GB
有一个Java程序在执行Cypher查询,以及社区发现算法。刚开始程序运行正常,过了一段时间,发现程序跑到一半会挂掉,原因是内存不足。服务器系统为CentOS6.9,32G内存,安装的Neo4j3.4.4社区版。从以下方面着手处理内存问题:
1、根据实际情况调整配置文件neo4j.conf里面的参数值:
# java heap 初始值
dbms.memory.heap.initial_size=1g
# java heap 最大值,一般不要超过可用物理内存的80%
dbms.memory.heap.max_size=16g
# pagecache大小,官方建议设为:(总内存-dbms.memory.heap.max_size)/2,这样算下来我这台服务器应该设为(32g-16g)/2=8g,但由于服务器上面还有其他程序在占用内存,我这里根据实际情况,调整为2g
dbms.memory.pagecache.size=2g
2、调整Linux服务器的swap分区大小:
调整完neo4j.conf参数后,发现还是存在内存问题,再看Linux服务器的swap分区,只有512M,全部被占满,后来将swap分区调整为32G。
(调整swap分区大小的方法可参考:https://blog.csdn.net/andyguan01_2/article/details/86680635)
经过以上两步调整,内存问题解决了,但执行Neo4j查询很慢,于是给节点加上索引,速度提升了10倍。
(给节点增加索引的方法可参考:https://blog.csdn.net/andyguan01_2/article/details/89357758)
总结起来就是三点:
1、修改参数文件neo4j.conf;
2、调整Linux的swap分区大小;
3、给节点增加索引。
完毕。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。