【问题标题】:How to set memory limit for OOM Killer for chrome?如何为 chrome 的 OOM Killer 设置内存限制?
【发布时间】:2020-04-30 02:36:58
【问题描述】:

chrome 调用 oom-killer:gfp_mask=0xd0, order=0, oom_score_adj=300

我在使用无头 chrome 浏览器 + Selenium 进行测试时遇到上述错误。

【问题讨论】:

标签: linux selenium google-chrome memory out-of-memory


【解决方案1】:

此错误消息...

chrome invoked oom-killer: gfp_mask=0xd0, order=0, oom_score_adj=300

...暗示 ChromeDriver 控制 Browsing ContextChrome 浏览器 调用了 OOM Killer,因为 错误。


内存不足

Out of Memory 错误消息可能会在您尝试启动新程序或尝试使用已运行的程序时出现,即使您仍有大量可用的物理和页面文件内存。


OOM 杀手

OOM Killer 或 Out Of Memory Killer 是 linux 内核在系统内存严重不足时使用的进程。出现这种情况是因为 linux 内核为其进程分配了过多的内存。当一个进程启动时,它会向内核请求一块内存。这个初始请求通常是一个很大的请求,进程不会立即或实际上永远不会使用所有请求。内核意识到进程请求冗余内存的这种趋势,会过度分配系统内存。这意味着当系统具有例如 2GB 的 RAM 时,内核可能会为进程分配 2.5GB。这通过确保分配给进程的内存被积极使用来最大化系统内存的使用。现在,如果有足够多的进程开始使用它们请求的所有内存块,那么将没有足够的物理内存来支持它们。这意味着正在运行的进程需要比物理可用更多的内存。这种情况正是linux内核调用OOM Killer来检查所有正在运行的进程并杀死其中一个或多个以释放系统内存并保持系统运行的情况。


Chrome 是 OOM Killer 的第一个受害者

令人惊讶的是,Chrome 浏览器客户端似乎是 oom 杀手的第一个受害者。当 Linux OOM Killer 使用 highest score=(RSS + oom_score_adj) 终止进程时,chrome 选项卡被终止,因为它们的 oom_score_adj300kLowestRendererOomScore = 300 in chrome_constants.cc)如下:

#if defined(OS_LINUX)
const int kLowestRendererOomScore = 300;
const int kHighestRendererOomScore = 1000;
#endif  

详情

这个问题是一个已知问题,可以很容易地reproduced。我们已经在oom_score_adj too high - chrome is always the first victiom of the oom killer 中详细讨论了这个问题。目标是调整 Chrome OS 中的 OOM,以确保最近打开的选项卡不会被杀死,因为 OOM 杀手默认更喜欢最近的进程。但是在不会反映的 Linux 发行版上,您会遇到不良行为,Chrome proc 被杀死而不是其他可能应该被杀死的 proc。


解决方案

错误堆栈跟踪方面的一些细节将有助于我们建议您在以下方面进行一些更改:

  • 虚拟机总使用量
  • 物理记忆
  • 交换内存

您可以在以下位置找到一些相关讨论:

然而,有一个代码审查来解决这个问题,但讨论似乎仍处于状态 AssignedPriority:2 与 in:


tl;博士

java.lang.OutOfMemoryError: unable to create new native thread error using ChromeDriver and Chrome through Selenium in Spring boot


结尾

Chromium OS - Design Documents - Out of memory handling

【讨论】:

    【解决方案2】:

    尽管有 32GB 的 RAM,但这个 chromium OOM 仍在其最新版本中发生!

    由于此问题将完全冻结 Xorg,因此 sysrq 密钥关联可以帮助恢复控制台终端。

    ALT + SYS + K 杀铬

    考虑在内核启动命令行中添加 sysrq_always_enabled。

    【讨论】:

      猜你喜欢
      • 2017-09-25
      • 2021-12-02
      • 2014-12-11
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2016-10-18
      相关资源
      最近更新 更多