【问题标题】:Docker hyperkit process CPU usage going crazy. How to keep it under control?Docker hyperkit 进程 CPU 使用率变得疯狂。如何控制它?
【发布时间】:2020-07-07 18:34:50
【问题描述】:

在 macOS 上使用 docker (docker-compose)。当运行 Docker 容器并将 Visual Studio Code (VSCode) 附加到活动的应用程序容器时,它可能会使 hyperkit 进程变得疯狂:( MacBook 粉丝必须全速前进以试图降低温度。

在 python 文件上使用 VSCode 时,我注意到导致扫描/解析文件的操作(例如由 pylint 执行的操作)会将 hyperkit CPU 使用率增加到最大值,并且 MacBook 粉丝会全速运行 :(。Hyperkit CPU当 pylint 的动作完成后,使用量再次下降。

当使用 VSCode 调试我的 Django Python 应用程序时,hyperkit CPU 使用率再次达到最大值。当主动调试时,hyperkit 会变得疯狂,但之后它会再次稳定下来。

我目前正在将“绑定挂载”切换为“卷挂载”,我想我看到了一些改进,但还没有做足够的测试来得出任何结论。我只是将我的源代码切换为使用“volume mount”而不是“bind mount”,并且将对我的静态文件和数据库执行相同的操作,看看这是否会带来改进。

您可以在 Docker 卷上查看此 stackoverflow post,了解有关该主题的更多信息。 这是我发现的有关此问题的一些帖子: https://code.visualstudio.com/docs/remote/containers?origin_team=TJ8BCJSSG https://github.com/docker/for-mac/issues/1759

关于如何控制 hyperkit 进程的任何其他想法❓

[3 月 27 日更新] Docker 调试模式设置为 TRUE 我已将其更改为 FALSE,但我没有看到任何重大改进。

[3 月 27 日更新] 对我的源代码 (app) 文件夹使用“委托”选项,第一印象是积极的。我看到了显着的性能改进,我们必须看看它是否持续???? FYI Docker docu on delegated:容器的视图是权威的(在容器更新出现在主机之前允许延迟)

[3 月 27 日更新] 我还减少了 Docker 桌面可以使用的 CPU 内核数量(设置->高级)。希望这可以防止 CPU 过热。

【问题讨论】:

  • 在 Docker 中运行你的应用程序吗?在 MacOS 主机上,您甚至不需要专门安装 Python;我有一个/usr/bin/python3,对于普通开发来说应该可以正常工作。
  • 我知道并且知道。但是,我想保持我的 MacOS 干净,并为我将从事的每个项目包含环境。虚拟环境与 Python 配合得很好,但一个项目不仅仅是 Python 库:)。过去我使用过运行良好的 VMWare 虚拟机。另一个好处是,使用 docker,您可以拥有一个更接近生产环境的开发环境,我认为我们都有只出现在生产环境中的错误 :)。
  • 对我的源代码 (app) 文件夹使用“委托”选项,第一印象是积极的。我看到了显着的性能改进,我们必须看看它是否持续???? FYI Docker docu on delegated:容器的视图是权威的(在容器更新出现在主机之前允许延迟)
  • 我还减少了 Docker 桌面可以使用的 CPU 内核数量(设置->高级)。希望这可以防止 CPU 过热。最近的更改提高了性能,但我怀疑它会变得更好。

标签: python docker visual-studio-code docker-compose vscode-debugger


【解决方案1】:

我通过使用http://docker-sync.io 创建卷来“解决”了这个问题,我可以在不提高 CPU 使用率的情况下挂载这些卷。我目前正在运行 8 个容器(6 个 Python 和 2 个节点)并开启了文件观察器,我的 CPU 使用率为 25%。

【讨论】:

  • 谢谢,我去看看。我最近升级到了 macOS Catalina(它本身就有问题twitter.com/vdbDennis/status/1313466431057661952twitter.com/vdbDennis/status/1314715016105463814),但还没有开始使用 Docker 进行开发。感谢您的回答。
  • 初步来说,这对我来说效果很好,当我最终去寻找这个解决方案时,令人惊讶的是,(1) macOS 上的 docker 性能从根本上来说非常糟糕,(2) 我没有'没有早点听说过 docker-sync
  • 对 macOS 12 用户的提示。docker-sync 需要 Ruby 2,因此请先安装。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
相关资源
最近更新 更多