【问题标题】:CEF / Chromium render process CPU usageCEF / Chromium 渲染进程 CPU 使用率
【发布时间】:2017-04-12 09:39:34
【问题描述】:

我使用 CEF4Delphi 将 CEF / Chromium 嵌入到我的 Delphi XE 10.1 应用程序中。我目前在 CEF 版本 3.2987.1597.gffc5773(Chromium 版本 57.0.2987.110),32 位。

当客户不浏览时,我可以在 Windows 任务管理器中看到渲染进程通常保持 0% 的 CPU 使用率,但有时渲染进程似乎会卡住并占用它可以获得的所有 CPU(100%单个 CPU,占总数的 16%,因为我有 6 个可用),即使用户什么都不做并且浏览器窗口不可见。当卡住时,它似乎一直卡住,直到我结束该过程,已经观察到几个小时。我已打开详细日志记录,但只要用户不做任何事情,就不会记录任何内容。在启动时和用户积极浏览时,我确实得到了很多日志记录。

关于如何解决这个问题的任何提示?我只在我的终端服务器上看到这个问题,并且我自己无法在开发机器或 TS 上重现该行为。我上次看到这种行为是在应用程序启动后大约两个小时。

任何帮助表示赞赏。

谢谢, 苏尔

【问题讨论】:

  • Upstream cefclient 在窗口最小化时做了一个技巧,它将浏览器窗口大小设置为 0x0 以减少资源使用。也许这可以帮助您在此处查看示例代码:github.com/cztomczak/phpdesktop/issues/179
  • 谢谢,我试过了,但是窗口大小没有效果。仍然以 100% CPU 运行。我现在也在我的开发机器上不时重现该问题,但仍然无法找到问题。

标签: delphi chromium chromium-embedded tchromium cef4delphi


【解决方案1】:

抱歉回复晚了。

关闭您的应用并清除缓存和 cookie 目录。

【讨论】:

  • 谢谢,但我的用户没有遇到任何问题,所以他们只是让应用程序挂起。我目前所做的是监视每个渲染进程的 CPU 使用率,并在浏览器窗口被隐藏后终止具有高 CPU 使用率的进程。当再次可见时,我触发 refresh() 并且主 chrome 进程开始一个新的渲染进程。这似乎可行,但应该有更好的解决方案......
  • 抱歉这么晚才回复。在第一个 CEF4Delphi 版本中发布浏览器时存在问题,当您关闭应用程序时,浏览器子进程仍然工作。最新的 CEF4Delphi 版本没有这个问题。请再次下载 CEF4Delphi 并将其中一个演示用作您的应用程序的模板。