Tag: jvm

如何以更大的堆大小运行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"]

Jprofile可以连接到docker中运行的JVM

我是JProfiler的新手。 我最近遇到了一个问题。 我的Java应用程序正在docker中运行,这意味着JVM正在docker中运行。 但是我的jprofile安装在主机上。 我知道jprofiler必须连接到一个JVM。 那么,是否有jprofiler可以连接到docker中运行的jvm呢?

如何高效地dockerized java微服务

虽然Java应用程序服务器将扩展独特的JVM以运行多个(微)服务,但是dockerized java微服务体系结构将为每个dockerized微服务运行JVM。 考虑到20个以上的java微服务和有限数量的主机,似乎每个主机上的JVM占用的资源量是巨大的。 有没有一种有效的方法来解决这个问题? 是否有可能调整每个JVM来限制资源消耗? 目的是限制在java微服务体系结构中使用docker的开销。

Docker / CoreOS上的Java JVM

我正在学习CoreOS / Docker,并试图围绕几件事情思考。 使用Java基础架构,是否可以在自己的容器中使用JVM,并让其他Java应用程序/服务使用此JVM容器? 如果没有,我假设JVM将不得不捆绑在每个容器中,所以基本上你必须把Java dockerfile和合并我的Java服务; 实质上创build了一个在CoreOS机器上运行的Linux机器+ Java +服务容器。 我唯一的想法是可以在CoreOS本身上运行JVM,但似乎这是不可能的。

Docker容器 – JVM内存尖峰 – 竞技场块内存空间

在对ECS / EC2 / Docker / Centos7 / Tomcat / OpenJDK8环境中运行的Java Web应用程序进行性能testing期间,我正在观察JVM内存中的大量离散峰值。 性能testing非常简单,它包含连续的并发请求,位于运行在由Elastic Container Servicepipe理的EC2主机上的一对Docker容器之前的AWS Application Load Balancer。 通常并发级别是30个并发负载testing客户端连接/线程。 几分钟之内,其中一个Docker容器通常会受到影响。 内存峰值似乎在非堆内存中。 具体而言,内存峰值似乎与Arena Chunk内存空间有关。 比较没有经历过尖峰的JVM的内存占用量与Thread , Arena Chunk内存空间的突出performance。 以下是使用jcmd实用程序的VM内部内存比较。 注意Arena Chunk内存的荒谬数字和Thread内存的相对较高的数字。 testing的并发级别可以为Tomcat请求线程池中的线程立即创build需求。 但是,在第一波请求中并不总是出现高峰。 你见过类似的东西吗? 你知道什么是造成穗? Docker统计 记忆钉容器: Mon Oct 9 00:31:45 UTC 2017 89440337e936 27.36% 530 MiB / 2.93 GiB 17.67% 15.6 MB / 24.1 MB […]

docker统计100%的内存

我有一个容器,运行一个Java应用程序与以下jvm参数: -XX:+UseG1GC -Xms512m -Xmx2048m -XX:MaxPermSize=256m 我正在使用docker内存限制选项: docker run -it -m 2304m foo bash 在容器初始化后运行docker stats myApp就会给我: CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O myApp 0.17% 660.5 MB/2.416 GB 27.34% 240.8 kB/133.4 kB 但几个小时后,我有以下数据: CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O myApp 202.18% 2.416 GB/2.416 GB 100.00% 27.67 GB/19.49 GB 虽然,如果我查看容器内正在运行的应用程序的进程执行细节,我有~735MB的用法,myApp继续计算请求没有任何问题: me@docker-container […]

我怎么知道为什么Docker容器停止?

我有一个包含JVM进程的Docker容器。 当过程结束时,容器完成并停止。 尽pipe非常less见,但我的JVM突然间出现了硬故障,例如OutOfMemoryError。 当发生这种情况时,我的容器就像普通的JVM出口一样停下来。 对于正常的JVM日志logging,我可以拥有分布式日志logging等,但是在这种硬故障情况下,我想知道JVM的垂死词语,这些词语通常在stderr上发出。 有没有办法知道为什么我的容器停下来,在日志,stderr,或沿着这些线看什么?

在Docker容器中运行时,JVM不能映射保留的内存

我似乎无法在我的服务器上的Docker容器中运行Java。 即使发出java -version ,我也会得到以下错误。 root@86088d679103:/# java -version OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000035ce1000000, 2555904, 1) failed; error='Operation not permitted' (errno=1) # # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 2555904 bytes for committing reserved memory. # An error report file with more […]

如何在Docker中监控java应用程序的内存使用情况

我在Docker容器中的tomcat上运行java web应用程序。 有什么办法来监视Java应用程序的内存使用情况吗? 我尝试使用jconsole与泊坞窗的进程ID,但它告诉我Invalidate process id 我也在tomcat中启用JMX,但不知道如何绑定到它。 我可以从我的本地使用visualvm绑定主机,但无法find绑定到主机内的docker的方式。 有没有什么好的方法来实现这一目标? 谢谢

Docker(LXC)容器中的JVM内存分配

我们已经dockerized一个JVM(Scala)应用程序,Java 1.7,并试图决定如何分配内存。 我们有一个应用程序在Docker容器中运行。 如果Docker容器分配了4GB的内存,我们是否应该为JVM分配4GB(或者为了安全起见,可能less一些)? 据我了解,除了从入口点调用Docker容器内部没有其他进程运行,所以我们不应该担心非JVM内存使用 – 是真的,还是过度简化? 还有其他问题我们应该问? 编辑我们使用Mesos / Marathon来部署Docker镜像 – 我相信它确实在内存上设置了cgroup限制(至less它给人的印象是这样),但我肯定是错的。