news 2026/7/7 17:15:40

Linux OOM 问题之 DMSERVER 受害者

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux OOM 问题之 DMSERVER 受害者

Shell 脚本模拟(无需安装工具) OOM 问题

#!/bin/bash #持续申请内存,每次申请 100MB,直到内存耗尽。 while true; do # 创建 100MB 临时文件,读取到内存(cat 命令会占用内存)。 cat /dev/zero |head -c 100M |tail & done

运行脚本:

chmod +x memory_oom.sh && ./memory_oom.sh

停止方法:

killall tail

检查OS 日志:

Dec 15 15:18:49 test kernel: [ 1308.010846] tail invoked oom-killer: gfp_mask=0x6280ca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), nodemask=(null), order=0, oom_score_adj=0 Dec 15 15:18:51 test kernel: [ 1308.010847] tail cpuset=/ mems_allowed=0 Dec 15 15:18:51 test kernel: [ 1308.010850] CPU: 1 PID: 12786 Comm: tail Kdump: loaded Not tainted 4.19.90-23.8.v2101.ky10.x86_64 #1 Dec 15 15:18:51 test kernel: [ 1308.010851] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006 Dec 15 15:18:51 test kernel: [ 1308.010851] Call Trace: Dec 15 15:18:51 test kernel: [ 1308.010856] dump_stack+0x66/0x8b Dec 15 15:18:51 test kernel: [ 1308.010859] dump_header+0x6e/0x299 Dec 15 15:18:51 test kernel: [ 1308.010860] oom_kill_process+0x259/0x280 Dec 15 15:18:51 test kernel: [ 1308.010861] ? oom_badness+0xe1/0x130 Dec 15 15:18:51 test kernel: [ 1308.010862] out_of_memory+0x110/0x4f0 Dec 15 15:18:51 test kernel: [ 1308.010864] __alloc_pages_slowpath+0x9c4/0xd10 Dec 15 15:18:51 test kernel: [ 1308.010866] __alloc_pages_nodemask+0x245/0x280 Dec 15 15:18:51 test kernel: [ 1308.010868] alloc_pages_vma+0x7c/0x1f0 Dec 15 15:18:51 test kernel: [ 1308.010870] do_anonymous_page+0x10c/0x400 Dec 15 15:18:51 test kernel: [ 1308.010871] __handle_mm_fault+0x672/0x6b0 Dec 15 15:18:51 test kernel: [ 1308.010873] handle_mm_fault+0xdc/0x230 Dec 15 15:18:51 test kernel: [ 1308.010875] __do_page_fault+0x2b5/0x4e0 Dec 15 15:18:51 test kernel: [ 1308.010877] do_page_fault+0x31/0x130 Dec 15 15:18:51 test kernel: [ 1308.010879] page_fault+0x1e/0x30 ...... Dec 15 15:18:51 test kernel: [ 1308.010945] Tasks state (memory values in pages): Dec 15 15:18:51 test kernel: [ 1308.010945] [ pid ] uid tgid total_vm rss pgtables_bytes swapents oom_score_adj name Dec 15 15:18:51 test kernel: [ 1308.010950] [ 606] 0 606 7653 1054 90112 0 -250 systemd-journal Dec 15 15:18:51 test kernel: [ 1308.010951] [ 629] 0 629 38407 74 61440 0 0 lvmetad Dec 15 15:18:51 test kernel: [ 1308.010953] [ 636] 0 636 11499 646 86016 0 -1000 systemd-udevd Dec 15 15:18:51 test kernel: [ 1308.010954] [ 638] 192 638 6796 243 86016 0 0 systemd-network Dec 15 15:18:51 test kernel: [ 1308.010956] [ 768] 32 768 2792 170 65536 0 0 rpcbind Dec 15 15:18:51 test kernel: [ 1308.010958] [ 769] 975 769 23033 239 86016 0 0 systemd-timesyn Dec 15 15:18:51 test kernel: [ 1308.010959] [ 774] 0 774 740 28 49152 0 0 mdadm Dec 15 15:18:51 test kernel: [ 1308.010960] [ 775] 0 775 27063 612 81920 0 -1000 auditd Dec 15 15:18:51 test kernel: [ 1308.010961] [ 781] 0 781 1607 65 61440 0 -1000 sedispatch Dec 15 15:18:51 test kernel: [ 1308.010963] [ 807] 977 807 3542 258 65536 0 -900 dbus-daemon ...... Dec 15 15:18:51 test kernel: [ 1308.011398] [ 13054] 2001 13054 53140 16 61440 0 0 cat Dec 15 15:18:51 test kernel: [ 1308.011399] [ 13055] 2001 13055 53188 16 65536 0 0 head Dec 15 15:18:51 test kernel: [ 1308.011401] [ 13056] 2001 13056 54311 1138 69632 0 0 tail Dec 15 15:18:51 test kernel: [ 1308.011402] [ 13057] 2001 13057 53140 16 57344 0 0 cat Dec 15 15:18:51 test kernel: [ 1308.011403] [ 13058] 2001 13058 53188 16 53248 0 0 head Dec 15 15:18:51 test kernel: [ 1308.011404] [ 13059] 2001 13059 54040 848 69632 0 0 tail Dec 15 15:18:51 test kernel: [ 1308.011405] [ 13060] 2001 13060 53140 16 57344 0 0 cat Dec 15 15:18:51 test kernel: [ 1308.011406] [ 13061] 2001 13061 53188 16 61440 0 0 head Dec 15 15:18:51 test kernel: [ 1308.011407] [ 13062] 2001 13062 53600 479 61440 0 0 tail Dec 15 15:18:51 test kernel: [ 1308.011409] [ 13063] 2001 13063 53140 15 65536 0 0 cat Dec 15 15:18:51 test kernel: [ 1308.011410] [ 13064] 2001 13064 571 10 36864 0 0 head Dec 15 15:18:51 test kernel: [ 1308.011411] [ 13065] 2001 13065 53113 16 65536 0 0 tail Dec 15 15:18:51 test kernel: [ 1308.011412] [ 13066] 2001 13066 92 1 36864 0 0 cat Dec 15 15:18:51 test kernel: [ 1308.011413] [ 13067] 2001 13067 94 1 32768 0 0 head Dec 15 15:18:51 test kernel: [ 1308.011414] [ 13068] 2001 13068 53471 75 53248 0 0 memory_oom.sh Dec 15 15:18:51 test kernel: [ 1308.011416] [ 13069] 2001 13069 53471 74 49152 0 0 memory_oom.sh

上面的数据说明是tail 触发了oom-killer "tail invoked oom-killer"。

Dec 15 15:18:51 test kernel: [ 1308.011528] Killed process 1402 (dmserver) total-vm:4938804kB, anon-rss:633824kB, file-rss:0kB, shmem-rss:0kB Dec 15 15:18:51 test kernel: [ 1308.024444] oom_reaper: reaped process 1402 (dmserver), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB

OOM kill 了 占用内存比较大的 dmserver 进程来释放内存

Dec 15 15:18:53 test kernel: [ 1309.328984] Out of memory: Kill process 12786 (tail) score 20 or sacrifice child Dec 15 15:18:53 test kernel: [ 1309.328989] Killed process 12786 (tail) total-vm:272548kB, anon-rss:59868kB, file-rss:0kB, shmem-rss:0kB Dec 15 15:18:53 test kernel: [ 1309.360638] oom_reaper: reaped process 12786 (tail), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB

OOM 进一步的 Kill 了其他占内存多的 tail 进程

Dec 15 15:18:53 test kernel: [ 1309.852805] Out of memory: Kill process 12819 (tail) score 16 or sacrifice child Dec 15 15:18:53 test kernel: [ 1309.852809] Killed process 12819 (tail) total-vm:262244kB, anon-rss:49476kB, file-rss:0kB, shmem-rss:0kB

OOM kill 的这个过程不断的反复杀掉内存占用多的进程来是否内存。

结论:

在当前案例中,tail 进程是我们设计的,用来耗尽内存的,而dmserver 是受害者,只是因为内存占的大被kill 掉了。

欢迎访问达梦技术分享社区 ECO
https://eco.dameng.com

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 7:26:29

基于单片机的压力机润滑油泵与主电机控制系统设计

系统总体设计概述 点击链接下载设计资料:https://download.csdn.net/download/m0_51061483/92081525 1.1 设计背景与工程意义 压力机作为工业生产中常见的重要设备,广泛应用于冲压、成形、锻造等加工场合,其运行过程对可靠性和安全性要求极…

作者头像 李华
网站建设 2026/7/7 2:41:16

配置静态或默认或动态路由

实验要求 配置静态路由,或默认路由,或动态路由使全网互通 实验步骤配置IP地址 PC1配置PC2配置PC3配置R1的配置 [Huawei]system-view [Huawei]sysname R1 [R1]interface GigabitEthernet 0/0/0 [RGigabitEthernet0/0/0]ip address 192.168.1.10 255.255…

作者头像 李华
网站建设 2026/7/7 18:49:42

28.驱动程序,生成ko文件,需要放到特定文件夹去编译吗?

编写Linux内核驱动生成.ko(内核模块)文件,不一定需要把代码放到内核源码目录编译,但核心取决于你的编译方式——有两种主流方式,对应不同的文件存放逻辑,推荐第二种(更灵活)&#xf…

作者头像 李华
网站建设 2026/7/7 10:55:35

P1319 压缩技术

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h>int main() {// 动态读取所有压缩码数字int* codes NULL;int count 0;int capacity 10;int num;// 初始分配内存codes (int*)malloc(capacity * sizeof(int));// 读取所有数字while (s…

作者头像 李华
网站建设 2026/7/7 18:23:21

冒泡排序与选择排序详解

《冒泡排序和选择排序》冒泡排序&#xff1a;冒泡排序&#xff1a;两两相比&#xff0c;如果前面大于后面的值交换位置外循环要经过多少轮比较 一轮找出一个最值内循环比较多少次 例如5个数比较4次即可 下一轮的时候 不用和上传最值进行比较&#xff0c;所以写内循环次数可以 这…

作者头像 李华
网站建设 2026/7/6 23:38:37

告别AI痕迹:5款智能工具

现在AI“大行其道”&#xff0c;很多同学都学会了用chatgpt或者其他AI工具来辅助写论文&#xff0c;但是一些论文检测平台却管得更严了&#xff0c;不仅有查重检测&#xff0c;居然还有AI率检测&#xff01;很多高校也开始卡AI率&#xff0c;AI率不过关的很有可能论文不通过&am…

作者头像 李华