gpt4 book ai didi

electron - 如何调试 electron 中的高 cpu 使用率?

转载 作者:行者123 更新时间:2023-12-03 12:21:22 27 4
gpt4 key购买 nike

我正在编写一个 Electron 应用程序,一些构建后测试人员开始注意到两个 electron.exe 进程一直在消耗大量 CPU 时间。一个钉住一个 CPU 内核,另一个使用大约 85% 的内核。

我敢肯定情况并非总是如此,因为几个月前的构建并没有这样做。但我不知道如何调试可能引入此问题的代码更改,因为代码库在那段时间发生了巨大变化。

process.getIOCounters() 报告每隔几分钟就会发生几千兆字节的 IO。应用程序没有死锁,一切仍然正常,只是在消耗 CPU。它会在应用程序打开的任何时候发生,即使它在后台没有任何用户输入也是如此。我只有 Windows 10 x64 系统,我已将其部署为 Electron 1.7.9 和 1.7.5。

根据行为,我确定此 IO 是渲染线程和主线程之间的进程间通信,但我没有手动执行任何 IPC。我认为这个问题是由我们引入的一些模块不正确地驻留在渲染线程中引起的。

我的问题是,如何调试 The Electron 渲染/主线程 IPC 管道?能不能hook一下,知道千兆流量的内容是什么?

最佳答案

基于过去几天尝试调试这个问题,我自己回答了这个问题:

My question, how does one debug the The Electron render/main thread IPC pipe?

不要, Electron 似乎是个好主意,将所有客户端和平台代码写在同一个地方。但是有很多陷阱,而且突然间图书馆会有奇怪的错误,解决这些错误的成本很高,因为它们在主流用例之外。这当然与我不是 Electron 专家有很大关系,但在现实世界中有最后期限和时间表,我不能总是像我想的那样加快速度。

我已经将我的架构更新为经过验证的真正服务/GUI 模型。我将保持对客户端代码的完整浏览器支持,以及在检测到 Electron 时为某些功能提供钩子(Hook)的 Electron 模式。

这使我能够快速识别特定于浏览器、版本或平台框架的问题。它还允许我使用我想要的任何版本的 NodeJS 来提供服务,这在我的案例中也是一个问题。

虽然我仍然喜欢 Electron,但我会在使用它时更加小心。如果我确实发现了我遇到此问题的具体原因,我会回来查看并报告这些详细信息。

更新

所以这个问题并不像我想象的那样与 Electron 直接相关,IPC 不在渲染器和主线程之间,而是一个转移注意力的问题。这实际上是导致 60 FPS 重绘率的 chrome 关键帧动画问题,仍然不确定为什么这会导致 GB 的 IPC,但无论如何。参见 https://github.com/Microsoft/vscode/issues/22900

我能够通过将此应用程序移植回 native 浏览器(使用 nodejs 服务)来发现这一点。然后我在 chrome、edge 和 firefox 中运行。只有 chrome 有这种行为。

关于electron - 如何调试 electron 中的高 cpu 使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47315688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com