为什么我的网络浏览器会导致整个计算机挂起?

为什么我的网络浏览器会导致整个计算机挂起?

我多次观察到这种情况:一个程序没有响应,所有其他进程都正常运行,然后整个系统挂起。

我认为这是因为没有响应的进程正在使用所有可用资源,而没有为其他进程留下任何资源。

但是这不是只适用于占用所有可用内存(RAM)的大型程序吗?

那么,为什么当我启动 Firefox 或 Internet Explorer(它们似乎是较小的程序)时会发生这种情况?

有什么方法可以防止程序和计算机挂起?

答案1

挂起通常不是完全由资源使用引起。

我们这里说的不是短暂的冻结或缓慢,而是实际的挂起超过几秒钟。内存使用通常不是造成这种情况的主要原因,因为 Windows 7 会使使用过多内存的程序崩溃。磁盘垃圾通常不是造成这种情况的主要原因,因为此类请求是异步的,并且某些必要部分会保留在内存中。

因此,你实际上需要一台可以缓解缓慢的旧电脑看起来像挂。或者是一个激进的资源占用者,但您可能已经提前预料到了;正常使用时发生的挂起通常不是上面列出的任何一种......

挂起通常是由驱动程序引起的。

想象一下,如果有 8 GB、八核处理器和 SSD RAID。我们现在容易挂起吗?不。

驱动程序(尤其是网络驱动程序)通常是导致挂起的主要原因,因为它们存在错误,它们正在等待某个应该立即执行的操作,但结果超时了。即使是短暂的挂起,您看不到任何资源使用情况,DPC 延迟检查器以及更详细的LatencyMon很好地找出了延迟过程调用因为你的驱动程序很慢。

这里的问题是人们不知道如何解决这个问题,我想说你可以用以下方法分析 Windows 上的任何性能问题这篇文章解释了 XPerf。但人们通常最多只使用资源监视器,而它无法提供像 Process Explorer、Process Monitor 和 XPerf 这样的工具那样详细的信息...

让我给你举一个如何解决典型挂起的例子。

  • 我弟弟抱怨说,关闭一个互联网标签会导致网络冻结 10 秒。

  • 关闭标签后,他无法移动鼠标。

  • 我用了性能性能从Windows SDK 中以非常低的水平分析他的系统的性能。

    • 开始追踪并确保它追踪到尽可能多的信息。

    • 去了浏览器,让他浏览一段时间,出现问题时打电话给我。

    • 立刻止住了踪迹。

  • 关闭 Facebook 标签会导致此行为。关闭 Google 标签则不会。

  • 网络驱动程序上出现了明显的峰值。

    • 更详细的分析是,这是由于同时关闭了太多连接造成的。

      这是有道理的,Facebook 进行了很多异步 AJAX 调用。

    • 当连接关闭时,驱动程序应该向目的地发送 FIN 或 RST 数据包。等待确认以完成或重置连接可能执行得不好……

  • 更新网络驱动程序,问题解决。

答案2

我认为你在这里谈论的是鞭笞,虽然它可能是由许多程序试图同时执行引起的,但更常见的原因是多个程序同时尝试访问硬盘驱动器。

加载程序时,它通常会尝试加载所需的所有其他模块。这些文件都来自主存储器,即硬盘。在此期间,如果相关程序被授予对硬盘的完全访问权限,计算机将运行和加载得更快。

如果不是,而你试图同时做多件事,操作系统将根据当前正在执行的进程对 I/O 请求进行优先级排序(然后进入进程调度器)。但是,由于没有两台计算机可以同时访问硬盘,因此您会发现计算机的吞吐量下降急剧地因为它尝试完成一个进程的 I/O 请求,然后是另一个进程的 I/O 请求,如此反复。

这不仅会导致驱动器本身磨损加剧,还会严重影响计算机的性能。几乎所有存储介质在执行以下任务时都会达到最大速度:一次做一件事(因为您一次只能读/写一个扇区)。


现在,当您的 RAM 耗尽时,可能会发生类似的事情,但原因不同。当您的物理内存耗尽时,操作系统会尝试将一些 RAM 页面写入硬盘。所有硬盘(SSD 或机械)的速度都比 RAM 慢得多,因此您始终要避免将内容分页到硬盘。

如果操作系统不断在两个进程之间切换进程调度程序,每个进程都按顺序分页到硬盘驱动器,计算机就会开始崩溃。这是因为操作系统执行一个程序的时间很短,然后执行另一个程序(执行的时间长短或频率取决于操作系统使用的调度方法)。如果进程太大而无法放入 RAM,它们可能会不断被清除/从页面/交换文件中读回,从而导致性能显著下降。

答案3

就资源使用情况而言,Firefox、Internet Explorer 和其他网络浏览器实际上可能是您计算机上“最大”的程序。

虽然其他程序可能会占用更多硬盘空间,但现代网络浏览器通常一开始就占用超过 100MB 的系统内存 (RAM),并且会迅速增加。连续几天打开 20 个标签的 Firefox 会话通常会占用超过 1GB 的系统内存。

相比之下,Microsoft Excel 会占用数百兆字节的硬盘空间,但无论打开的电子表格有多大,它仅占用大约 15 兆字节的内存。

除非您正在运行复杂的音频/视频程序或大型数据库,否则网络浏览器可能是您运行的最耗资源的程序。

关于崩溃:您的系统通常会因为遇到错误而挂起,而不是因为资源耗尽。

例如,如果您的内存芯片有问题,并且在打开 Firefox 或 Internet Explorer 时尝试解决该问题内存,则整个计算机可能会锁定并出现故障。

然而,Windows 非常智能,应该能够告诉您是否某个硬件导致了崩溃。

我建议使用以下工具测试你的计算机内存记忆测试 x86或者类似情况,如果您经常遇到无法解释的崩溃。

另一个可能性是驱动程序。驱动程序可能是操作系统崩溃的最常见原因,如果程序尝试使用由故障驱动程序控制的资源,整个计算机将很容易崩溃。

在追踪可能出现的问题时,更新驱动程序是个好主意。在更新驱动程序时,您应该确保您的程序和操作系统已完全打上补丁,因为许多补丁都包含解决常见崩溃问题的稳定性更新。

答案4

Firefox 在单独的进程中运行 Flash。

通常我通过任务管理器杀死flash进程,并且firefox被解除阻止。

在插件中,我将 Flash 设置为“请求激活”。这样,当我恢复之前的 Firefox 会话时,YouTube 视频将停止启动。

“请求激活”的替代方法是 Firefox 的 Flash 阻止附加组件。

无论如何,有时我必须重新启动 Windows。

相关内容