首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

内存不足:杀死进程还是牺牲子进程

我们的监控系统已经察觉到进程死掉了,并且已经重启了崩溃的服务。因为血液中已经有了咖啡因,我开始收集更多的证据。30分钟后,在/var/log/kern.log文件中发现了以下内容: ?...大家都知道,Linux建立在一些守护进程之上。这些守护进程被几个看起来糟透了的内核任务看管。所有现代Linux内核都内置了一个被称为“内存不足杀手”的机制,它在内存不足的情况下会杀掉用户进程。...当检测到内存不足时,杀手会被激活并选择一个进程杀死。选择机制是用启发式算法对所有进程进行打分,最后选择得分最低的进程杀死。...理解“内存不足杀手” 默认情况下,Linux内核允许进程请求比当前系统可用内存更多的内存。这是有道理的,因为大部分进程从来不会用掉它们请求的所有内存。...这将导致内存不足,使得没有内存页面可以分配给进程。你可能遇到过这种情况,只有root账号才能杀掉offending任务。为了避免这种情况发生,杀手进程会被启动,识别进程并杀死它。

2K10

监控进程

让我们看看 Monit 的用法,假设我们要监控 Nginx 进程,一旦其 CPU 使用率连续 5 次轮询周期里均超过 50% 的话,就重启进程,此时就可以按照如下方式设置: check process...如果进程本身不存在 pidfile,那么也可以使用 matching 语法来匹配进程。...再让我们看看 Supervisor 的用法,假设我们要监控 100 个 PHP 实现的 Worker 进程,用来提供 Gearman 之类的服务,由于 PHP 本身运行模式的缘故,为了避免严重的内存泄漏问题...不管用什么来监控进程,如果监控者本身挂了,那么被监控者无疑就失控了。...此时需要考虑如何监控监控者本身,这似乎是一个递归问题,不过文章开头我们说过,Linux 本身的初始化系统就能实现简单的监控功能,以 SysVinit 为例,编辑 /etc/inittab 文件: SU:

76440
您找到你想要的搜索结果了吗?
是的
没有找到

监控进程内存

,可以通过 pstree 命令查看进程与子进程的关系,但是其输出图形,不太方便获取所有子进程ID,因此打算自己编写 C++ 代码来实现 思路 用伪码表示: 当待查询进程存在: 遍历用户所有进程,...获取每个进程的ID和父进程ID及内存 维护一个表,记录与待查询进程相关的子进程及其内存,初始化只有待查询进程 遍历所有进程: 如果当前进程的父进程在表中:...不过为了实现简单,我这里没有采用构建树的方式,而是直接遍历,遇到相关的进程就更新进表中,同时删除掉此进程;当某次遍历后维护进程的链表长度没有发生改变,说明所有子进程已查找完毕;这种计算方式对少量数据情况还是挺快的.../pm 25201 2 监控 id 为25201的进程,刷新间隔为2秒 结果输出: 2020-09-18 17:37:05 1932 2020-09-18 17:37:07 1932 2020-09-18...17:37:09 1932 这里输出的内存单位是 KB 注意:由于需要进程启动之后才能开启监控,导致进程内存无法从0开始;当进程结束,则监控程序也会退出 关于结果展示,直接将输出结果的第二列和第三列拷贝到

1.2K10

monit监控服务进程

Monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,适用于Linux/Unix平台。 它可以自动修复那些已经停止运作的程序,特使适合处理那些由于多种原因导致的软件错误....var/monit chmod -R 750 /var/monit/ 然后启动monit /etc/init.d/monit start 进入配置目录 cd /etc/monit.d/ 添加mysql服务监控...添加http服务监控 vi http  check process http with pidfile /usr/local/apache/logs/httpd.pid    start program...,然后查看进程是否启动 如果需要监控tomcat,需要开启tomcat的pid文件,默认是没有的 修改脚本,添加蓝色部分 vi /usr/local/tomcat/bin/catalina.sh #  .../etc/init.d/monit restart 注意: Monit是是根据被监控进程的pid文件来检测的,如果没有pid文件,是无法使用的。

90820

Monit进程监控实践

Monit的核心功能就是邮件通知,当你配置好需要监控进程之后,无论是进程死亡,或者是进程变更都会发送报警邮件并且会更具你的预先配置好的命令尝试重启它,更牛逼的事当monit被关闭的时候也会发送邮件通知...附加功能 比如你不是用的云服务器自己管理的机器,但是机器数量又没有特别多没有到要搭建一套完整的监控系统的份上(zabbix或open-falcon)的份上Monit可以比较好的帮你低成本的解决这个问题...) 注意:配置文件中还有系统报警等可以自行了解这里不做太多说明 配置报警的几种方式 重中之重就是监控进程或者是服务器的报警,我们一般会选择/etc/monit.d/下面建立和监控进程名一样的文件,Monit...会自动读取解析,这里先来介绍几种常见的配置 按照PID进行监控 使用PID进行监控的基本上是一些程序组件比如Nginx,PHP-FPM,Supervisor,KafKa等,它们都会有一个共同点就是会有一个...*.pid的文件来记录系统进程标示,所以我们如下配置: /etc/monit.d/nginx check process nginx with pidfile /var/run/nginx.pid #通过

92330

Centos运行Mysql因为内存不足进程被杀

Kill   process (Mysqld)  我英语未过四级,但是这个简单英文还是能看懂的,大致意思时内存不够了,然后把mysql的进程给杀掉了,阿西吧!!! 尴尬了,怎么办? ...如果设置得太高,可能会造成文件描述符不足,从而造成性能不 稳定或者连接失败。对于有1G 内存的机器,推荐值是128-256。 ...,二进制日志包含所有更新数据的语句,其目的是在恢复数据库时用它来把数据 尽可能恢复到最后的状态。...注意的是:binlog-do-db和binlog-ignore-db 一次只指定一个数据库,指定多个数据库需要多个语句。...而且,MySQL会将所有的数据库名称改成小写,在指定数据库时必须全部使用小写名字,否则不会起作用。

3.2K50

monit监控服务进程

Monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,适用于Linux/Unix平台。 它可以自动修复那些已经停止运作的程序,特使适合处理那些由于多种原因导致的软件错误....var/monit chmod -R 750 /var/monit/ 然后启动monit /etc/init.d/monit start 进入配置目录 cd /etc/monit.d/ 添加mysql服务监控...添加http服务监控 vi http  check process http with pidfile /usr/local/apache/logs/httpd.pid    start program...,然后查看进程是否启动 如果需要监控tomcat,需要开启tomcat的pid文件,默认是没有的 修改脚本,添加蓝色部分 vi /usr/local/tomcat/bin/catalina.sh #  .../etc/init.d/monit restart 注意: Monit是是根据被监控进程的pid文件来检测的,如果没有pid文件,是无法使用的。

1.1K30

Zabbix通过进程监控进程状态配置详解

Zabbix通过进程监控进程状态配置详解 有时候我们只能通过进程监控一个进程是否停掉了,因为有的进程并没有对外提供端口号,以下记录了下详细步骤,通过这个示例会学到很多zabbix核心配置相关的东西。...总的来说,配置一个完整的监控流程如下: 1.创建监控项,即配置要监控的指标,如内存的使用率,CPU的使用率,进程的运行状况等,配了监控项后就会定时收集机器的配置信息,然后等待zabbix server收集...2.创建触发器,触发器将监控项收集的数据通过触发器表达式进行评估。...下面配置监控服务器的logstash(开源实时日志同步项目)进程是否在运行: 1.首先创建监控进程监控项: 监控项的组成:key[参数] 例如获取5分钟的负载情况:system.cpu.load...,其中cmdline参数可以是进程名字包含的关键字,在这里我的进程的关键字是logstash,因此按如下方式创建监控logstash进程监控项,表示机器所有用户所有状态的logstash进程数量:

2.2K30

systemd - CentOS 7进程守护&监控

需求: 运行环境为CentOS 7系统,我们开发了一个程序,需要在开机时启动它,当程序进程crash或者开机之后,守护进程立即拉起进程。...解决方案: 使用CentOS 7中的init进程systemd systemd简介 Linux Init & CentOS systemd Linux一直以来采用init进程。...Init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。(这也是CentOS5的主要特征) 2、启动脚本复杂。Init进程只是执行启动脚本,不管其他事情。...PID为1.其他所有的进程都是它的子进程。 systemd 是 Linux 下的一款系统和服务管理器,兼容 SysV 和 LSB 的启动脚本。...创建被监控脚本 $ cd ~ $ vim test_init_watch.sh //脚本任务:间隔一秒钟输出一个date时间戳到指定到指定文件 #!

2.5K20

进程监控工具supervisor 启动Mongodb

进程监控工具supervisor 启动Mongodb 一什么是supervisor Superviosr是一个UNIX-like系统上的进程监控工具。...Supervisor是一个Python开发的client/server系统,可以管理和监控*nix上面的进程。...因为linux对进程状态的反馈,有时候不太准确。为啥不准确?这个楼主也不知道啊,官方文档是这么说的,知道的告诉楼主一下吧,感激不尽。而supervisor监控进程,得到的子进程状态无疑是准确的。...#  启动监控进程     supervisorctl start all #  关闭监控进程       supervisorctl stop all #  查看状态       supervisorctl...八、监控告警 如果需求只是自动拉起crash的进程,通过命令行对进程进行管理,以上内容足矣。supervisor 3.0版本引入了事件,利用这个特性我们实现实时监控进程状态并告警。

2.4K60

linux动态监控进程懂了没?

top top与ps类似,他们都是用来显示正在执行的进程。 两者最大的不同之处就是top在执行一段时间可以更新正在运行的进程。...基本语法: top +选项 选项 功能 -d 秒数 指定top指令每隔几秒更新,默认为3秒 -i 使top不显示任何闲置或者僵死进程 -p 通过指定监控进程ID来仅仅监控某个进程的状态 上述图片中...0 zombie 代表僵死进程 %Cpu(s): 0.7 us, 0.0 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st cpu...Swap分区内存占用情况 交互模式 操作 功能 M 以内存的使用率排序 P 以cpu使用率排序,默认就是此项 N 以PID排序 q 退出top 1.想要监视特定的用户 首先: top 回车,查看执行的进程...u 回车,再输入用户名即可 想要终止指定进程 首先: top 回车,查看执行的进程 k 然后输入k 回车,再输入要结束的进程ID号 监控网络状态 查看系统网络情况 netstat 基本·语法

15520
领券