您的位置 首页 > 数码极客

(如何查看服务器进程)linux查看服务器进程命令!

问题描述

linux 内核有个机制叫 OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉。

典型的情况是:某天一台机器突然 ssh 远程登录不了,但能 ping 通,说明不是网络的故障,原因是 sshd 进程被 OOM killer 杀掉了(多次遇到这样的假死状况)。重启机器后查看系统日志「/var/log/messages」会发现「Out of Memory: Kill process 1865(sshd)」类似的错误信息。

如何防止重要的系统进程触发(OOM)机制而被杀死呢?只需要一招,就可以轻松避免~

设置参数「/proc/PID/oom_adj为-17」,可临时关闭 Linux 内核的 OOM 机制。内核会通过特定的算法给每个进程计算一个分数来决定杀哪个进程,每个进程的 OOM 分数可以在「/proc/PID/oom_score」中找到。

处理办法

2.1 方法一:设置参数/proc/PID/oom_adj为-17

如何防止mongod被杀,可以这样操作:

1、编写脚本文件oomadj.sh,内容如下:

#!/bin/bash netstat -ntlup |grep mongod |awk '{print$NF}' |awk -F '/' '{print$(NF-1)}' |while read PID; do echo -17 >/proc/$PID/oom_adj; done

2、设置定时计划

[root@mnkj-mongodb-01 ~]crontab -e */1 * * * * /roo

至于为什么用-17而不用其他数值(默认值为0),这个是由linux内核定义的,查看内核源码可知:

以 linux-3.3.6 版本的 kernel 源码为例,路径为「linux-3.6.6/include/linux」,阅读内核源码可「oom_adj」的可调值为 15 到 -16,其中 15 最大-16 最小,-17 为禁止使用OOM。「oom_score」为 2 的 N 次方计算出来的,其中 N 就是进程的「oom_adj」值,所以「oom_score」的分数越高就越会被内核优先杀掉。

2.2 方法二:修改内核参数禁止OOM机制

# sysctl -w vm.panic_on_oom=1 vm.panic_on_oom = 1 //1表示关闭,默认为0表示开启OOM # sysctl -p

注意事项

注意:

1、Kernel-2.6.26之前版本的 oomkiller 算法不够精确,RHEL 6.x 版本的 2.6.32 可以解决这个问题。

2、子进程会继承父进程的 oom_adj。

3、OOM 不适合于解决内存泄漏(Memory leak)的问题。

4、有时 free 查看还有充足的内存,但还是会触发 OOM,是因为该进程可能占用了特殊的内存地址空间。

OOM killer 是保证系统内存不被个别进程消耗殆尽非常实用的机制,但是在实际工作除了进程运行过多会造成内存占用过高,还有很多其他的因素比如:访问增多、遭受攻击等...

这时我们不仅要使用好 OOM killer,更需要关注服务器的资源使用情况,需要完善的实时监控体系,能够对于系统存在问题能够及时的发现并处理,保证业务稳定运行。

企业还没有健全的监控体系?没关系,一个 SaaS 工具搞定你!

推荐大家一个运维监控工具——王教授。不仅可以接入业务的各式监控一图汇聚展示,还可以对监控的资源使用出现的问题,以及未来风险问题以告警的形式手机通知到个人,最大几率减小了运维事故的发生。

绑定对应云账号的AcessKey即可随时查看到该账户下所有资产状况,及时提醒云资源的变化情况,例如:服务器 CPU 使用率偏高、服务器安全组设置不安全、云数据库存在慢SQL等...

服务器 CPU 使用率偏高

云数据库存在慢查询

有需要的运维同学欢迎点击文末王教授二维码查看详情吧!


网站崩溃找不到原因?平台搭建无从下手?热门技术不想落伍?想要变强找不到资料?

加入[IT拯救联盟],让大牛和同伴拯救你,带你装x带你飞。定期干货分享、大牛专业解答、实用IT工具优选.....

私信小编“联盟”,即可加入我们~

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何查看服务器进程,linux查看服务器进程命令,如何查看服务器进程数,如何查看服务器进程记录,如何查看服务器进程信息”边界阅读