是什么导致 Linux 在浏览某些网站时几分钟没有响应?

是什么导致 Linux 在浏览某些网站时几分钟没有响应?

我使用的是 Linux 4.15,当 RAM 使用达到最高点时,这种情况多次发生 - 整个操作系统变得无响应、冻结且无用。我认为它唯一起作用的是磁盘(主系统分区),它正在被大量使用。

我不知道这个问题是特定于操作系统、特定于硬件还是特定于配置。

有任何想法吗?

答案1

是什么导致 Linux 反应迟钝?

过度使用可用 RAM 会导致大量交换,肯定会造成这种情况。请记住,机械 HDD 上的随机访问 I/O 需要移动读/写磁头,该磁头每秒只能执行大约 100 次搜索。

如果你“太多”过度使用 RAM,Linux 通常会完全出去吃午饭。我还有一个旋转磁盘和 8GB RAM。我在使用几个软件时遇到过内存泄漏问题。即,它们的内存使用量随着时间的推移不断增长并且永远不会减少,因此控制它的唯一方法是停止软件然后重新启动它。根据我在此期间的经验,如果您生成 3GB 以上的交换,我对听到超过十分钟的延迟并不感到非常惊讶。

当您的交换空间超过 3GB 时,您不一定会在所有情况下看到这种情况。理论认为关键概念是殴打。另一方面,如果您尝试在两个不同的工作集之间切换,并且需要将 3GB 换入换出,以 100MB/s 的速度,即使可以完美优化 I/O 模式,也至少需要 60 秒。实际上,I/O 模式远非最佳。

在遇到这个困难之后,我将交换空间重新格式化为 2GB(比以前小了几倍),因此系统将无法进行深度交换。即使不调整分区大小,您也可以执行此操作,因为mkswap需要一个可选的大小参数。

粗略的平衡是在内存不足和进程被终止之间,以及让系统挂起很长时间以至于你放弃并重新启动之间。我不知道4GB交换分区是否太大;这可能取决于你在做什么。重要的是要注意磁盘何时开始搅动,检查内存使用情况并做出相应的响应。

检查多进程应用程序的内存使用情况很困难。要查看每个进程的内存使用情况而不重复计算共享内存,您可以使用sudo atop -R、按Mm,然后查看 PSIZE 列。您也可以使用smem. smem -t -P firefox将显示所有 Firefox 进程的 PSS,后跟一行总 PSS。这是测量基于 Firefox 或 Chrome 的浏览器的总内存使用情况的正确方法。 (尽管还有特定于浏览器的功能用于显示内存使用情况,这将显示各个选项卡)。

答案2

AFAIK,臃肿软件不应该使操作系统无响应,所以我不会考虑甚至不接受臃肿软件是问题的根本原因

你不会喜欢这个,但我认为过时的软件你的问题(虽然我不确定是内存还是磁盘有问题)。不幸的是,Linux 内核在处理高内存压力情况方面表现不佳,并且众所周知,一旦内存耗尽,基本上就需要重新启动。有三件事让我相信你的问题是资源耗尽:

  1. 根 (/) 和 DATA 上的磁盘空间几乎已满。我不确定你使用 DATA 的目的是什么,但我之前遇到过问题,因为我的根分区大小调整得太小,导致我的系统无法运行。
  2. 您的内存压力很大,这意味着您的 RAM 几乎已满。当 RAM 开始变满时,您将开始出现页面错误。当内核无法为进程分配足够的内存而必须使用某些系统速度慢得多的交换空间时,就会发生页面错误。这引出了我们最后的观察:
  3. 您的交换空间几乎已满。由于 RAM 和交换区几乎已满,因此您的系统显然存在较高的内存压力。

基本上,将这三者放在一起,您的系统就没有足够的资源来执行大部分操作。不幸的是,Linux 在处理低内存情况时表现不佳(与 Windows 中的 NT 内核相比),但情况似乎就是如此。你可以找到更多讨论在这个 Reddit 帖子中及其链接的邮件列表。

至于如何解决您的情况,我想说增加交换大小是一个好主意,但由于磁盘空间不足,这将是一个问题。除非你的 Minecraft 服务器有很多人,否则我认为将其内存减少到 1024m 左右是安全的(我个人在大约 10 人的情况下使用 1024m,效果很好)。我还会为您的 Minecraft 服务器使用龙头或纸张,因为它们往往性能更高。

祝你好运!

答案3

的输出是什么free -m?如果我们不知道您使用了多少内存,那么您拥有的内存量就没有意义。我很想知道正在使用多少交换空间。

不过,我确实认为您已经回答了自己的问题。如果您从不关闭它们,在浏览器中打开“许多选项卡”肯定会减慢系统速度,因为无论如何它们都会继续消耗内存;当你的系统死机时,你一次打开了多少个?

如果您的系统因其他内存密集型任务(例如“从非常复杂的 UML 图生成非常大的图”)而冻结,那么这也是有意义的。这绝对会减慢你的系统在生成图表时的速度,所以这并不奇怪。

听起来确实这就是您的系统应该表现的方式。要么就是我在这里遗漏了一些东西。

顺便说一句,当系统变得无响应时,硬盘统计数据并不重要,因为内存不足几乎总是罪魁祸首。

答案4

您的 htop 输出显示您对 RAM 的需求高于其容量(总 RAM+SWAP)。因此,显然首先要考虑的是减少 RAM 使用量或提高 RAM 可用性。

请注意,现代的 Firefox 版本是极其由于为窗口/选项卡提供进程和内存空间的方式,资源匮乏。这个想法是为了避免选项卡崩溃而导致整个浏览器瘫痪。这玩意儿值这价吗?谁能告诉我...无论如何,由于上述原因,我也遇到过类似的问题,因为我的 Pentium 4 主板仅支持 2GB RAM。为了避免可能的内存耗尽崩溃,我在备用 SSD 上添加了约 800M 交换空间,显然是为了尽可能少地使用它。我通过更改称为交换性的设置来实现这一点,该设置确定内核交换内存页面的渴望程度。一些有用的命令如下。

检查当前的swappiness:cat /proc/sys/vm/swappiness

这很可能会给您带来 60 左右的结果,对于负载较低的系统的最大性能而言,该值相当高。对于您来说,显然这会适得其反,因此您可以使用命令更改设置,例如sysctl vm.swappiness=1在系统运行时更改设置。

要保存这些更改,您必须查找该文件/etc/sysctl.conf。在该文件中,更改值或添加行vm.swappiness=1.

请注意,这不是您的情况的解决方案,但应该是一个可用的解决方法。

制作人员 https://askubuntu.com/questions/103915/how-do-i-configure-swappiness

上述答案的来源,包括进一步的解释。我发现这篇文章对我的情况非常有帮助。

相关内容