设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 1936|回复: 0

Linux下简单通过dmesg抓包搜索被系统内核因为物理内存不足杀死进程的日志记录

[复制链接]
 成长值: 84

签到天数: 4489 天

[LV.Master]伴坛终老

发表于 2019/1/29 23:53 | 显示全部楼层 |阅读模式 |Google Chrome 71.0.3578.98|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
  1. dmesg | grep 'killed process'
复制代码


输出例如
[899645.642211] Out of memory in UB 1090: OOM killed process 22746 (kangle) score 0 vm:964244kB, rss:462320kB, swap:146824kB
[1000516.597358] Out of memory in UB 1090: OOM killed process 30476 (kangle) score 0 vm:964244kB, rss:456916kB, swap:151772kB
[1086130.314772] Out of memory in UB 1090: OOM killed process 3588 (kangle) score 0 vm:833172kB, rss:467888kB, swap:141332kB
[1086135.320878] Out of memory in UB 1090: OOM killed process 587 (transmission-da) score 0 vm:322820kB, rss:6556kB, swap:9156kB
[1210371.902115] Out of memory in UB 1090: OOM killed process 16870 (kangle) score 0 vm:964248kB, rss:466188kB, swap:146176kB
[1356648.237245] Out of memory in UB 1090: OOM killed process 11381 (kangle) score 0 vm:964244kB, rss:449100kB, swap:148264kB
[1356653.242627] Out of memory in UB 1090: OOM killed process 10884 (CmsGoAgent.linu) score 0 vm:750004kB, rss:7852kB, swap:600kB
[1356653.247906] Out of memory in UB 1090: OOM killed process 9604 (cdnbest) score 0 vm:738160kB, rss:7072kB, swap:1124kB
[1474145.197776] Out of memory in UB 1090: OOM killed process 6111 (kangle) score 0 vm:954000kB, rss:461560kB, swap:148020kB


或者
  1. dmesg | grep 'Out of memory'
复制代码
Out of memory: Kill process 9986 (kangle) score 326 or sacrifice child



OOM killer可以永久关闭,临时生效(vm.overcommit_memory该选项测试无效,占用200M SWAP后还是会被杀死)
  1. sysctl -w vm.overcommit_memory=2
复制代码

永久关闭
  1. echo 'vm.overcommit_memory=2' >> /etc/sysctl.conf
复制代码

sysctl -p
使其永久生效

增加swap优先级,设置更大的swappiness值也可以做到缓解Out of memory: Kill process现象
https://bbs.itzmx.com/thread-94781-1-1.html

关闭OOM killer参考
https://www.percona.com/blog/2019/08/02/out-of-memory-killer-or-savior/

https://serverfault.com/questions/141988/avoid-linux-out-of-memory-application-teardown

https://www.kernel.org/doc/gorman/html/understand/understand016.html

可以使用以下设置控制 vm_overcommit_memory 变量内存:

0: 将变量设置为 0,内核将决定是否过量使用。这是大多数 Linux 版本的默认值。

1: 将变量设置为 1 意味着内核将始终过量使用。这是一个有风险的设置,因为内核总是将内存过度分配给进程。这可能导致内核内存不足,因为进程很有可能最终使用内核提交的内存。

2:将变量设置为 2 意味着内核不应过度使用大于 overcommit_ratio 的内存。这个 overcommit_ratio 是另一个内核设置,您可以在其中指定内核可以过度使用的内存百分比。如果没有空间用于过量使用,则内存分配功能失败,过量使用被拒绝。这是 PostgreSQL 最安全的选项和推荐值。   

可以影响 OOM 杀手的第二件事是 Swappiness 的行为。这种行为可以由变量 cat /proc/sys/vm/swappiness 控制。这些值指定用于处理页面交换的内核设置。该值越大,OOM 杀死进程的机会越少,但会因为 I/O 而影响数据库效率。一个较小的用于可变控制所述swappiness手段,存在用于OOM杀手在踢几率要高的值,但它也提高了数据库的性能。默认值为 60,但如果整个数据库都适合内存,则建议将此值设置为 1。

概括
您不必被 Killer (OOM-Killer) 这个名字所迷惑。凶手并不总是有害的;它是您系统的救星。它会杀死罪魁祸首的进程,并防止您的系统崩溃。为了避免必须使用OOM-Killer杀死PostgreSQL,建议将vm .overcommit_memory 值设置为2。它不会100%避免OOM-Killer,但会减少杀死PostgreSQL进程的机会。
如果vm.oom-kill = 1,那么OOM功能将会从系统内核中彻底禁用,可能导致系统内存不足直接崩溃(该选项测试无效)。

[发帖际遇]: 小樱 发帖时在路边捡到 5 樱币,偷偷放进了口袋. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2024/4/19 09:01 , Processed in 0.143059 second(s), 19 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表