如何准确找出哪个进程被 OOM killer 杀死了?
OOM 终止程序刚刚终止了某个进程。当值grep oom_kill /proc/vmstat增加时,我可以知道。 我如何知道具体哪个进程被终止了(名称、进程标识符、所有者等等)以及具体时间(时间戳)? ...
OOM 终止程序刚刚终止了某个进程。当值grep oom_kill /proc/vmstat增加时,我可以知道。 我如何知道具体哪个进程被终止了(名称、进程标识符、所有者等等)以及具体时间(时间戳)? ...
在嵌入式系统上,有 2 个 tmpfs 挂载。1GB 挂载到 /tmp,另外 1GB 挂载到 /run,总 RAM 为 8GB。未使用交换空间。 如果其中一个达到其极限,系统就会自行重置。 即以下两个验证都会导致重置。 cat /dev/urandom > /tmp/foo或者cat /dev/urandom > /run/foo 我原本期望 OOM-Killer 和/或 cgroups 能够启动并避免此类问题。 内核端和 systemd 端应该配置错了什么? 编辑:另一项测试显示 OOM-killer 正在尝试完成其工作 ~ # dd if=/...
在装有 Powershell v 4.0 的服务器上发现问题 (使用 Powershell 5.1 的服务器似乎没有受到相同问题的影响) 这是一个奇怪的行为调用 Web 请求命令。 请看这个例子: 出于某种原因,我需要在将文件下载到我的服务器之前知道文件的大小。 然后我使用以下命令: $WebClient = Invoke-WebRequest -Uri $element -Method Head -Credential $Cred $filesize = $webClient.Headers.'Content-Length' 问题是发送前$W...
我在内存相对较少(1 GB)的计算机上安装了 Gentoo。当我安装llvm(emerge -a llvm)时,计算机总是内存不足。cc1plus当系统无法使用时,所有 4 个进程都使用了大约 25 % 的内存。我认为一次只使用一个进程可能会有所帮助。 如何仅使用一个编译器进程运行llvm构建(使用cmake和)?ninja 更新 我必须在以下位置做出改变make.conf: #MAKEFLAGS="-j3" MAKEFLAGS="-j1" 我尝试了很多其他的变体,但我将在几天内写出来。(因为编译需要几个小时,如果没有可用的 RAM,即使我使用交换,我也...
我正在使用dd在崩溃的内核中传输较大的内核核心文件(4GB~12GB),该内核只有少量可用内存(~400MB)。 问题是 dd 可能会因 OOM 恐慌而崩溃,因为它只是将一大块 vmcore 转储到套接字中,这可能会导致系统运行 OOM。 我的问题是:如何dd根据可用内存来限制其速度或限制其缓冲区大小? 谢谢。 ...
Debian 9.4,Linux 4.9 我有时会编译一些几乎无法放入 RAM 的内容,或者一个流氓进程突然开始占用超过可用内存的内存。当进程超出可用 RAM 时,Linux 开始破坏磁盘,即使我启用了零交换(不启用交换是为了避免这种情况)。我猜它会开始丢弃并重新加载mmap当前正在运行的二进制文件的 ped 部分之类的东西? 此时我的 X 会话很快就变得没有响应,我所能做的就是等待几十分钟,直到整个 X 会话被终止,我才能重新登录。 我尝试寻找解决方案,但似乎没有任何效果。OOM 杀手无法捕获此过程,vm.overcommit_memory=2我甚至...
有没有什么方法可以让 Linux 应用程序得到通知,即 OOM 终止程序即将终止某个进程,或者已经终止了它? 系统是 Ubuntu 14.04 ARM v7、512MB、3.18.5 内核。 ...
我遇到了 OOM 问题,即使有大量交换空间,应用程序也会被终止 Jan 21 06:25:19[166423.248706] Free swap = 3997348kB Jan 21 06:25:19[166423.248708] Total swap = 4194300kB 我读过了Linux 不使用交换,但触发了 OOM killer并测试我的系统允许通过执行分配超过 4gb stress --vm 1 --vm-bytes 4096M --timeout 10s 那么OOM可能是什么原因呢? Jan 21 06:25:19[166423...
如果某个进程需要大量内存,系统会将所有其他进程移至交换文件。其中似乎包括 X11 服务器或终端等必要进程。 因此,如果某个进程不断分配内存且没有限制,那么一切都会变得无响应,直到该进程被 OOM-killer 杀死。我的笔记本电脑似乎特别敏感,反应非常糟糕。我刚刚花了整整一个小时等待进程终止,在此期间甚至鼠标光标都无法移动。 如何避免这种情况? 1) 禁用交换 => 我经常启动很多进程,然后这些进程就变成非活动进程。非活动进程应该移至交换。 2)购买 SSD => 太贵了 3)设置最大内存 ulimit => 但如果程序需要大量内...
有什么方法可以防止 Linux 交换任何事物而是当物理 RAM 耗尽时直接进入 OOM killer? 背景 我有一台 Linux 工作站,它偶尔会耗尽内存。发生这种情况时,它将无法恢复。(无论是否启用交换,情况都是如此,我见过这两种情况。) 在这种情况下,我希望 OOM 终止程序开始终止进程并持续执行,直到系统恢复或崩溃(两者之一,或两者之间的任何情况,都比无限期挂起要好)。有趣的是,即使禁用交换也不会发生这种情况,而是系统会给出正在交换的指示(东西可以工作,只是速度要慢几个数量级)。 我目前的理论是,Linux 仍在交换它认为由磁盘支持的数据...
我使用foreman(ruby gem) 一次启动 10 个工作进程。这会将数据system发送SIGTERM到主foreman进程。 但是,当我尝试运行 9 个工作进程时,一切都运行正常。 我不认为 OOM killer 在这里起作用,因为每个进程大约有 250mb,而我有 1 GB 的住宅空间和 3 GB 的交换空间。 知道是什么原因导致了这个问题吗? PS:foreman用于open3启动进程。 ...
我最近通过重新安装和重新配置将我的服务器从 Debian squeeze i386 升级到了 wheezy amd64。此外,我希望能够启动虚拟客户机,所以我也安装了 XEN。 然后我遇到了一个问题,OOM 杀手不时会破坏我的 Dom0 上的多个进程。然后我重新启动并禁用了几个服务(如 apache2、mysql、postgresql 等)。现在似乎没有进程被破坏了(不确定,因为它不是定期发生的,而是随机发生的)。但是:如果我对机器施加一些高负载(访问加密文件系统),OOM 杀手就会被激活。 不幸的是,问题发生后系统就无法使用了。所以我无法通过 ssh ...
有没有类似 renice 的 OOM 调整工具?也就是说,允许非 root 用户增加(但不能减少)他们所拥有的进程的 OOM 分数调整的工具? ...
我们有一个应用服务器,由于遗留原因,它仍然在带有 PAE 的 32 位内核上运行(Ubuntu 12.04 LTS)。该服务器有 24GB 的 RAM,如 free 的输出所示: $> 免费-lmt 已使用的、可用的、缓存的共享缓冲区总数 内存:24256 19468 4788 0 0 2382 低:189 146 42 最高:24067 19321 4745 -/+ 缓冲区/缓存:17085 7170 交换:19956 47 19908 总计:44212 19515 24697 但是,一旦实际内存使用量超过 16GB,...
经过一番研究,我发现可以通过在 /proc/pid/oom_adj 中插入一个值来调整甚至使某些进程免受 OOM 杀手的侵害,我当然需要使用 pidof 或 pgrep 或类似的东西来找到我的进程的 pid,并制作一个脚本,在我的所有进程启动并运行后运行该脚本。 OOM 杀手的问题和其他杀手一样,表面上看似理智、理性,但内心深处却非常混乱、疯狂,常常无法做出正确判断。 现在我个人并不介意进行一些杀戮,只要我知道发生了什么,并对受害者有一定的控制权(大家冷静一下,我说的是计算机方面的东西),所以我正在寻找一种更好的方法来保护某些进程免受可怕的 OOM 杀手...