如何以更大的堆大小运行Neo4j,指定-server和正确的GC策略

作为一个从来没有真正搞乱JVM的人,我怎么能确保我的Neo4j实例运行在所有build议的JVM设置下。 例如堆大小,服务器模式和-XX:+ UseConcMarkSweepGC

这些应该在一个configuration文件中设置? 我可以在运行时dynamic设置吗? 它们是否设置在系统级别? 在同一台机器上运行两个neo4j实例时,我可以有不同的设置吗?

在所有这些事情都被设定的时候,这有点模糊。

我正在docker集装箱内运行neo4j,所以这也是需要考虑的事情。

Dockerfile如下。 我正在用console命令启动neo4j

FROM dockerfile/java:oracle-java8 # INSTALL OS DEPENDENCIES AND NEO4J ADD /files/neo4j-enterprise-2.1.3-unix.tar.gz /opt/neo RUN rm /opt/neo/neo4j-enterprise-2.1.3/conf/neo4j-server.properties ADD /files/neo4j-server.properties /opt/neo/neo4j-enterprise-2.1.3/conf/neo4j-server.properties #RUN mv -f /files/neo4j-server.properties /opt/neo/neo4j-enterprise-2.1.3/conf/neo4j-server.properties EXPOSE 7474 CMD ["console"] ENTRYPOINT ["/opt/neo/neo4j-enterprise-2.1.3/bin/neo4j"] 

好的,你正在使用Neo4j服务器脚本。 在这种情况下,您应该在neo4j.propertiesconfiguration低级JVM属性,这些属性也应该位于conf目录中。 基本上neo4j.propertiesneo4j-server.properties 。 在你的Docker上下文中创build属性文件并configuration你想添加的属性。 然后在Dockerfile使用:

 ADD /files/neo4j.properties /opt/neo/neo4j-enterprise-2.1.3/conf/neo4j.properties 

属性文件中的语法如下(来自documetnation):

 # initial heap size (in MB) wrapper.java.initmemory=<value> # maximum heap size (in MB) wrapper.java.maxmemory=<value> # additional literal JVM parameter, where N is a number for each wrapper.java.additional.N=<value> 

另见http://docs.neo4j.org/chunked/stable/server-performance.html

testing设置是否应用的一种方法是在Docker容器中运行jinfo <pid> ,其中是Neo4j JVM的进程ID。 要input容器,可以在运行容器或使用nsenter时将命令行上的入口点更改为/bin/bash 。 后者将是我的select。