为什么 docker 容器没有使用所有可用的 CPU?

为什么 docker 容器没有使用所有可用的 CPU?

我正在比较在 Docker 容器(Windows 服务器映像、旧版 .NET 框架应用程序)中运行的应用程序与直接在主机中运行的相同应用程序的性能。

测试包括针对每个目标的 15 秒 Web 请求突发。我发现一个奇怪的现象:当我以主机应用程序为目标时,CPU 使用率达到最大值(如预期),但当我以容器化应用程序为目标时,CPU 使用率却非常低,尽管容器是在没有 CPU/内存限制的情况下创建的:

在此处输入图片描述

因此,容器化应用程序处理的 Web 请求比主机应用程序少得多。

这与 Windows 图像有关吗?有没有关于如何让 docker 使用所有可用 CPU 资源的提示?

答案1

因此,经过进一步挖掘,我相信我已经找到了此问题的原因。这似乎是一个与 docker 网络相关的问题。我最初的突发测试是localhost在容器化应用程序 URL 中使用的:

  • http://localhost:8081/docker/webapp

这在某种程度上导致了 GET 请求的网络延迟非常大,这就是 CPU 使用率低的原因。

只需将其更改为127.0.0.1容器化应用程序即可开始按预期运行:

以下是我简单的“爆发”测试的输出。第一个条目是主机应用程序,以下两个条目是使用不同 URL 测试的容器化应用程序:

在此处输入图片描述

“成功计数”是 15 秒内成功执行的 GET 请求的实际数量。成功计数越高越好。

相关内容