我已经玩了几个月的neo4j 2.0 db,我打算在专用服务器上安装db。我已经尝试了几个neo4j(jvm,caches,...)的配置,但我仍然不确定找到了最好的配置。 因此,向专家询问似乎更好:)
Db原语:
节点= 224,114,478
关系= 417,681,104
属性= 224,342,951
Db文件:
nodestore.db = 3.064Gb
relationshipstore.db = 13.460Gb
propertystore.db = 8.982 Gb
propertystore.db.string = 5.998 Gb
propertystore.db.arrays = 1kb
OS服务器:
Windows server 2012(64b)
使用Db:
主要使用cypher查询进行图遍历。
在我的开发笔记本电脑上Perfs也不算太差,即使有些查询有很大的滞后(我怀疑主要原因是因缺少RAM而导致交换)
图表特性:
我怀疑某些节点可能是巨大的集线器(直到1M关系),但它应该保持特殊状态。
您的建议是什么:
硬件大小调整,
neo4j配置:
堆大小,
使用内存映射缓冲区(有没有理由在Windows中将值保持为false?)
缓存类型,
建议使用Windows的jvm设置
...
提前致谢!
劳伦
答案 0 :(得分:1)
请查看这两个性能调整和硬件大小计算指南:
答案 1 :(得分:1)
图表的磁盘大小总计约为32 GB。 Neo4j具有两层缓存架构。第一层是文件缓冲区缓存。理想情况下,它应该与磁盘图上的大小相同,所以在你的情况下大约为32GB。
重要在Windows上运行Neo4j时,文件缓冲区缓存是Java堆的一部分(由于Windows本身很麻烦)。在Linux / Mac上,它已经脱离了堆。这就是为什么我一般不建议在Windows上使用Neo4j的生产环境的原因。
使用企业版时, cache_type
应为hpc
,社区为soft
。
要为第二个缓存层(对象缓存)提供一些合理的数量,我建议让一台机器至少有64GB RAM。由于文件缓冲区和对象缓存都在堆上,因此请将堆大,并考虑使用G1:-Xmx60G -XX:+UseG1GC
。通过取消注释neo4j-wrapper.conf
中的gc日志记录并逐步调整设置来观察GC行为。
请注意,Neo4j 2.2可能附带了一个不同的文件缓冲区缓存实现,它也适用于Windows上的堆。