neo4j内存/ JVM设置

时间:2015-11-16 08:45:22

标签: neo4j

我在具有27g RAM的CENTOS机器上运行neo4j 2.3。 db大小约为10g(现在),我希望neo4j尽可能快地工作

如果以下设置正常,请您建议吗? (我是JAVA的新手)

dbms.pagecache.memory=15g
wrapper.java.initmemory=8192
wrapper.java.maxmemory=8192

这些也是JVM操作系统选项:

java -XX:+PrintFlagsFinal -version | grep -e '\(Initial\|Max\)HeapSize'

   uintx InitialHeapSize   := 24696061952 {product}

   uintx MaxHeapSize      := 24696061952 {product}

***我不知道为什么我在htop中看到neo4j需要24g的虚拟内存。

1 个答案:

答案 0 :(得分:4)

我假设您使用的是最新稳定的Neo4j版本(2.3.1)。

您可能感兴趣的链接:

从Neo4j数据库中获得最佳性能可分为几个部分:

  1. 机器配置
  2. 数据库配置
  3. 应用程序配置
  4. TL; DR; - 您的设置没问题。

    机器配置

    您需要检查的是:

    • 好磁盘(最好使用SSD)。慢速磁盘可能会降低性能。 Struct:Neo4j Write Throughput on Linux ext4 Filesystems有很棒的帖子。另外:Linux filesystem tuning官方Neo4j文档。
    • 最大打开文件(doc)。
    • 网络。您的应用程序和服务器应位于一个本地网络中。驱动程序使用HTTP REST API与Neo4j数据库通信。因此,如果你不在本地网络中,那么长时间的请求可能会导致性能下降。

    服务器配置

    默认情况下,Neo4j足够智能,可根据您的机器自动确定设置。

    堆大小配置建议 - doc。基本规则 - 没有必要给予更多的记忆然后需要。

    Pagecache - doc

      

    它将存储在耐用介质上的Neo4j数据缓存。

    在neo4j 2.3.0中,对象缓存被完全删除,而pagecache现在只是缓存机制。那里的基本规则 - 如果你可以将你的数据库放在RAM中,那么将这个属性设置为数据库的大小(也许,在它上面添加一些+ 10-20%)。这将允许Neo4j将整个存储加载到RAM中。

    Other Neo4j configuration settings

    应用

    因此,在应用程序中,您应该确保以下几点:

    • 始终使用指定的参数执行cypher。现在,在2.3.0中,Cypher在首次执行时被编译为字节码。如果您的查询是参数化的,那么它允许数据库重用已编译的Cypher版本。原始(第一)Cypher查询执行性能可能非常糟糕。

    • 缓存分片。如果您的数据库足够大,并且不适合内存并且您正在使用群集部署,那么您可以从使用缓存分片中获益。基本上,您需要做的是 - 将对同一数据的请求路由到同一服务器。这将允许Neo4j将最常用的数据保留在缓存中。当每台服务器在缓存中拥有自己的数据时,你最终会遇到这种情况。

    其他

    我觉得有趣的其他设置: