作为一个从未真正搞过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"]
答案 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。后者将是我的选择。