2017-02-23 88 views
2

我们目前正在dockerize Java 8应用程序,我们有一个非常奇怪的行为。在docker之外,应用程序使用不到10%的cpu,但是当我们将应用程序运行到一个容器中时,我们有100%的CPU使用率。沉重的CPU使用的Docker Java 8容器

容器内部(与docker exec -it [container-id] top),罐子只使用cpu的10%。

我们尝试使用其他基础码头图像,如openjdk,但它不会改变任何内容。

泊坞文件:

FROM anapsix/alpine-java:8 
ADD . /producer 
WORKDIR /producer 
COPY ikb-1.0-SNAPSHOT-producer.jar ikb-1.0-SNAPSHOT-producer.jar 
COPY resources/ /resources/ 
CMD ["java", "-jar", "ikb-1.0-SNAPSHOT-producer.jar"] 

我们使用:

  • 泊坞版本: 1.13.1,建立092cba3
  • 泊坞窗,撰写版本: 1.11。 2,build dfed245
  • 服务器OS: CentOS的
+0

如果您在Docker容器内运行应用程序时在主机上运行top,java进程是否显示为使用100%CPU? –

+0

是的,就是这样! –

+1

如果你执行'kill -3 ',其中'pid'是java进程,你将得到一个线程转储。线程转储看起来很奇怪吗?像它试图做网络或I/O卡住? –

回答

1

正如我们在聊天讨论的,在那是在一个紧凑的循环旋转,因为没有用户输入的Java应用程序的线程。停止该线程导致CPU返回到它所属的位置。

+0

再次感谢你:) –