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

如何使用更大的堆大小运行Neo4j,指定-server和正确的GC策略,neo4j,jvm,docker,Neo4j,Jvm,Docker,作为一个从未真正干扰过JVM的人,我如何确保我的Neo4j实例使用所有推荐的JVM设置运行。例如堆大小、服务器模式和-XX:+UseConMarkSweepGC 这些应该在配置文件中设置吗?我可以在运行时动态设置吗?它们是否设置在系统级?在同一台机器上运行两个neo4j实例时,我可以有不同的设置吗 这是一个有点模糊,在什么时候所有这些事情得到设置 我在No坞容器中运行NeN4J,所以这也是一个值得考虑的问题。p> Dockerfile如下所示。我用console命令启动neo4j FROM

作为一个从未真正干扰过JVM的人,我如何确保我的Neo4j实例使用所有推荐的JVM设置运行。例如堆大小、服务器模式和-XX:+UseConMarkSweepGC

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

这是一个有点模糊,在什么时候所有这些事情得到设置

我在No坞容器中运行NeN4J,所以这也是一个值得考虑的问题。p> 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.properties
中配置低级JVM属性,该属性也应该位于
conf
目录中。基本上对
neo4j.properties
执行与对
neo4j server.properties
相同的操作。在Docker上下文中创建属性文件,并配置要添加的属性。然后在
Dockerfile
中使用:

ADD /files/neo4j.properties /opt/neo/neo4j-enterprise-2.1.3/conf/neo4j.properties
属性文件中的语法如下(来自文档):

#初始堆大小(MB)
wrapper.java.initmemory=
#最大堆大小(MB)
wrapper.java.maxmemory=
#附加的文字JVM参数,其中N是每个参数的数字
wrapper.java.additional.N=
另见


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

您应该显示您的Docker文件,特别是如何启动Neo4J。您需要将JVM设置传递给Java启动器,如何传递取决于Docker/Neo4J设置。如果您使用的是包装器脚本,那么通常可以设置一个变量,例如JAVA_OPTS。如果您直接在Dockerfile中调用java可执行文件,您将在那里指定选项。在这种情况下,您需要提供更多的上下文。
# 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>