如何阻止 Chrome 定期使用 100% CPU

如何阻止 Chrome 定期使用 100% CPU

因此,当我待机后再次打开电脑时,Chrome 会自动使用 100% 的 CPU,而无需我执行任何操作。这种情况持续约 10-20 秒。

问题是我的电池健康度约为 50%,由于长时间的高 CPU 使用率,电池无法承受,MacBook 会重新进入睡眠状态,即使充电量超过 90%,除非我插入电源适配器,否则我无法启动它。这真的很烦人,我遇到这个问题只是因为 Chrome。我可以控制任何其他应用程序的 CPU 使用率,所以这不是问题。

=====

天啊,谁来帮帮我吧,我受不了了。这个浏览器正在毁了我的生活 :(

在任务管理器中,它显示虽然 CPU 处于最大值,但网络活动也处于最大值,因此显然,它正在“呼叫总部”并发送任何内容。如果我无法阻止 CPU,我该如何阻止网络请求?我有点小窍门,但我不知道需要阻止什么规则或什么地址。

附言:现在经过一些更新后,它开始每 2-3 小时执行一次此操作,而不仅仅是待机后,并且当电池充满电时会消耗大约 15% 的电量,或者如果电池电量低于 60%,它只会让笔记本电脑进入睡眠模式。

在此处输入图片描述

答案1

前提

您遇到的问题无法重现,因为它取决于打开的 Chrome 窗口和选项卡的数量及其内容。不幸的是,即使您通过发布浏览器指向的所有链接来更精确,这也不够,因为互联网页面的内容会随着内部广告的变化而​​变化。

但是,我在 Linux 下使用 Firefox 时遇到了完全相同的问题。
所以不完全一样,反正也不差那么远。
为了更好地理解答案,请阅读下面的部分了解正在发生的事情。注:我没有时间写得更简洁一些……

部分或全部解决方案、原始或经过教育的解决方案。

  • Educated打开的窗口越少,问题就越少。您应该减少要经过暂停/重新激活过程的打开选项卡的数量。
    您可以使用类似一个标签[1]一个添加在将打开的页面(窗口和标签)分组到一种链接列表中,不会丢失它们,能够立即恢复它们(逐个窗口)并进行一些管理。将其视为与常规书签之间的更快、更舒适的替代方案。我用过它,它解决了我的大部分问题。

  • ???第三方插件可自动刷新(或在本例中只需单击一次)所有页面。例如超级容易的自动刷新或类似产品。我从未使用过这款产品,但它确实有效。

  • Almost raw重新加载。这很有可能破坏有问题的脚本。您可以重新加载包含许多脚本的大型窗口/选项卡。通常F5或重新加载按钮就足够了。对于打开许多选项卡的情况不太方便,但补丁可能会很有效。

  • Educated Almost raw。三个按钮,而不是一个。[ +] + R。比前一个按钮更深。
    您可能想要使用Chrome 开发工具[3]按下 F12:右键单击重新加载按钮将打开一个下拉菜单。

    此菜单为您提供了执行硬刷新,甚至清除缓存并自动执行硬刷新的选项。[3]

    • Ctrl+R 对于正常重新加载(Mac:按住Shift 并单击“重新加载”按钮,或者按R)。
    • Ctrl+ Shift+R对于硬重载(Mac:按住Cmd、Shift 键,然后按R)。
      注意:硬重新加载应该会清除该页面的存储缓存。
  • nice 浏览器窗口不响应的情况很少见。使用nice-n 19 chromerenice当它已经在运行时,或者top然后r进行 renice...)您将能够重新获得对该浏览器或浏览器其他窗口的某些控制,以减少电池消耗,因为大量请求的处理强度较低。

  • raw杀。原始快速而突然的解决方案,这是一种最后的手段,但很有效。
    您可以手动杀死铬例如从命令行,以及重新开始
    应该能够恢复您打开的窗口/选项卡(设置中有一个选项)。

    pkill chrome        ## Do what it says  
    pkill -9 chrome     ## Even more raw
    killall chrome      ## Alternative
    

了解正在发生的事情

当您在浏览器中打开一个窗口时,您的计算机会执行浏览器本身的一些代码,以及您正在加载的页面中的其他一些代码。页面越多,代码请求就越多。

在人类用户方面,计算机速度变慢了,直到我们决定添加一些附加组件以减少一些不必要的进程执行。那些广告拦截器中断一些他们知道的脚本,欺骗其他脚本,并使计算机整体恢复速度。这样,人类用户可以再次开始增加打开的页面数量,从而增加要执行的脚本数量(如果没有被阻止)。

我们倾向于将相似的搜索和页面分组到同一窗口的不同选项卡中,这样我们可以在需要时更快地导航它们并将它们分组在一起。这些链接很重要,不能被删除,但又不重要到需要加书签……而且它们在那里停留的时间比原计划的要长。

暂停

当你去暂停计算机,一般来说,进程被冻结,内存内容被转储。当你唤醒它时,一切都会好起来,或者至少应该会好起来。

在“一切都好”和“至少应该好”之间,存在着问题。
几乎所有打开的页面中都有脚本等待定期执行(刷新、检查条件……),还有一些脚本等待服务器的答复。当你唤醒你的电脑时,所有预期的超时已过期。从这里开始 CPU/内存使用率和互联网使用率出现激增。

此外,这样的脚本(以及部分页面代码)并不总是考虑到被停职然后他们可以无限期地等待从处理已接受请求的服务器获得响应:您的脚本知道服务器已收到请求并正在处理响应,服务器在此期间使请求过期,唤醒后的脚本无限期地等待或向服务器发送大量请求......

对你的计算机可能产生的其他影响是由于运行大量请求而导致的瓶颈同时处理、互联网上的请求,多重访问到数据库。

所有这些都没有考虑意外错误在脚本中可能会误解在此期间更改的内存地址、对同一过程的后续实例的响应等等。发挥你的想象力去想想事情可能出错的其他方式,这永远不够。(墨菲定律之一)。

结论

鉴于该问题的不可重复性、可能发现未考虑暂停后果而编写的脚本、页面上的脚本与附加组件中的更新之间不断的追逐以阻止它们,我担心计算机唤醒时总会有不负责任的脚本。然而,将打开的页面数量降到最低可以降低这种风险。

此外,选择更新暂停期后打开的每个页面完全是主观的,并且取决于具体情况:我可能更喜欢在关闭计算机之前进行搜索并查看其结果页面,而另一个用户可能希望在计算机唤醒后获得更新后的版本……

答案2

我没有 Mac,所以我无法提供具体的解决方案。

但是,我可以想象您的 RAM 不足。在这种情况下,操作系统(不仅是 OS X,还有 Windows、Linux 和其他操作系统)开始将 RAM 内容(其他正在运行的应用程序或同一应用程序的 RAM 内容)交换到磁盘。您描述的阻塞时间(10 到 20 秒)对于这种情况很常见,因为有许多其他应用程序正在运行或打开了很多选项卡。

你可以通过观察以下现象来检验这个理论是否正确:磁盘在该阶段的活动。如果磁盘在这 10 或 20 秒内处于持续负载状态(虽然不必是理论上的最大磁盘负载),那么我们很有可能是正确的。

大多数操作系统都提供了监控交换活动的方法,这当然比仅仅监控磁盘活动要好;但是,由于我对 OS X 一无所知,所以我不知道这是否可行。

如果问题出在 RAM 大小上,您有以下几种选择:

  • 为机器添加 RAM(对于常见情况,8 GB 应该是合理的,但如果您进行 CAD、图像处理、视频编辑或类似操作,则可能需要 32 GB 或更多)。

  • 使用 Chrome 时关闭其他应用程序,并减少 Chrome 中打开的标签数量。

  • 尝试通过向您的系统添加快速 SSD(代替或补充您的 HDD)来提高速度并降低交换本身的能耗(如果您还没有),并让 O/S 将交换文件放在该 SSD 上。

答案3

危急时刻需要采取紧急措施。使用此实用程序可禁用 Turbo Boost 并防止 CPU 功耗激增:https://www.rugarciap.com/turbo-boost-switcher-for-os-x/

使用此实用程序限制 CPU 的总功率: http://volta.garymathews.com/

免责声明:我没有使用过其中任何一个。但是,从理论上讲它们应该有帮助。

另一个工具是 Chrome 扩展程序 The Great Suspender,我在我的系统上使用它来减少未使用标签的耗电量。据说最近版本的 Chrome 已经不再需要它了,但我仍然认为它很有帮助。 https://chrome.google.com/webstore/detail/the-great-suspender/klbibkeccnjlkjkiokjodocebajanakg

相关内容