如何运行具有更大堆大小的Neo4j,指定-server并更正GC策略

时间:2014-09-15 02:52:08

标签: neo4j jvm docker

作为一个从未真正搞过JVM的人,我怎么能确保我的Neo4j实例运行所有推荐的JVM设置。例如。堆大小,服务器模式和-XX:+ UseConcMarkSweepGC

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

在所有这些事情都设置好的时候有点模糊。

我在docker容器中运行neo4j,这也是需要考虑的事情。

Dockerfile如下。我用控制台命令启动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"]

1 个答案:

答案 0 :(得分:1)

好的,所以你正在使用Neo4j服务器脚本。在这种情况下,您应该在neo4j.properties中配置低级JVM属性,这些属性也应该位于conf目录中。基本上对neo4j.properties执行与neo4j-server.properties相同的操作。在Docker上下文中创建属性文件,并配置要添加的属性。然后在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

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