java - CPU 使用率高的 Docker Java 8 容器

标签 java docker dockerfile

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

在容器内部(使用 docker exec -it [container-id] top),jar 仅使用 10% 的 cpu。

我们尝试使用其他基础 docker 镜像,例如 openjdk,但它没有任何改变。

Docker 文件:

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"]

我们使用:

  • Docker 版本:1.13.1,build 092cba3
  • Docker-compose 版本:1.11.2,build dfed245
  • 服务器操作系统: CentOS

最佳答案

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

关于java - CPU 使用率高的 Docker Java 8 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42421109/

相关文章:

docker - 为什么用 "Not authoritative"响应我的 heroku 托管容器应用程序

docker - 将 AWS 角色提供的凭证传递给 docker 容器

docker - 如何更改 Dockerfile 中文件的权限?

java - 托管在 Internet 上运行的 Java Web 应用程序

reactjs - docker-compose up 卡在附加到

node.js - docker Alpine : autoreconf: failed to run aclocal: No such file or directory

docker - Yum install 不能在 boot2docker 主机上运行?

java - 转发 servlet POST 请求时出现 HTTP 错误 405

java - Firebase 设置-错误 : Failed to resolve: com. google.firebase :firebase-core:12. 0.1

java - 在java中使用jdbc、results.getString(1)或results.getString ("field_name"哪个更有效)