Crontab的sendmail邮件发送引发磁盘问题

news2024/11/18 2:59:39

一.背景

   大清早的收到一台服务器的内存占用高达98%的钉钉告警。 回想了一下,这台服务器没跑什么业务啊,咋从凌晨1点就开始告警呢?  赶紧登录服务器,top 按照内存倒序一下,没发现占用特别大的进程。内存监控图如下:  

但是发现了很多sendmail和postdrop进程,统计了一下这两个进程高达4-5K个进程。难怪负载和内存占用很高, 当时来不及分析原因,先解决问题再说。  sendmail和postdrop进程 应该是和业务和系统运行无关的,先全部kill再说:

killall sendmail && killall postdrop

 OK执行完毕后,内存和负载下来了。 

此时有时间分析原因了,网上找了一些资料,有些朋友也遇到过这个问题,大多数是和crontab定时任务有关系。 我纳闷了?这个玩意和crontab又有什么关系呢? 

  原来crontab有一个配置和机制, 默认配置如下:  MAILTO=root

  

   机制就是,当MAILTO=root这个配置存在:

        1.如果定时任务没有将错误输出和标准输出写到文件, 则在crontab发生错误时,触发发送邮件操作

        2.由sendmail程序发送邮件

        3.sendmail继续调用postdrop进行发送

        4.postdrop会将邮件先写入到/var/spool/postfix/maildrop/路径下,最后发生给root用户

        5.root用户可以查看/var/mail/root得到邮件内容

二.验证与实验

1.MAILTO=root不修改,定时任务没有重定向

    crontab配置如下:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
#0 12 * * * root /usr/bin/python3 /sh/bm-check.py &>> /sh/bm-check.log

* * * * * root /bin/bash /usr/bin/my

    明显并没有/usr/bin/my这个可运行程序,此时查看/var/mail/root

     有新内容产生,说明如果配置了MAILTO=root, 且定时任务没有将标准错误和标准输出到出,则定时任务报错时发送邮件

    我将定时任务改为:

* * * * * root /bin/bash /usr/bin/my &>> /sh/my.log

    此时查看邮件没有内容更新了,大家可以实操验证一下。

2.MAILTO="" 关闭整个邮件通知机制

    那如果定时任务有很多,想关闭这个mail通知机制怎么办呢? 每个任务都添加 &>> xx.log 显然不够优雅, 写起来也麻烦,要是有几百个定时任务都这么修改要疯。

    直接将MAILTO=root改为MAILTO="",  systemctl restart crond重启定时任务即可。 这样就不会在定时任务发生错误时,发送邮件了。

三.故障根本原因分析与处理

1.磁盘inode没监控,导致占满100%,sendmail和maildrop报错,堆积僵尸进程

    其实配置MAILTO=root本身没什么问题,本次故障根本问题还是inode使用率没做监控,导致inode写满导致sendmail和maildrop进程堆积变为僵尸进程,占用内存与系统负载.

    还有一个要注意的点就是/var/spool/postfix/maildrop要做定期清理, 这次inode占用很高就是这个目录导致的,文件数量达到了200w,导致inode占满。定期清理这样小文件数量会减少, 降低inode使用率。

2.配置prometheus告警面板与监控

 查询语句PromQL语句:  inode使用率 > 85%则显示在Grafana面板上

(1-(node_filesystem_files_free/node_filesystem_files)) * 100 > 85

 告警yaml:

groups:
  - name: 'hardware_monitor'
    rules:
      - alert: NodeFilesystemInodeNotFree #监控磁盘inode使用率
        expr: '(1-(node_filesystem_files_free/node_filesystem_files)) * 100 > 85'
        for: 5m
        labels:
          severity: critical
          threshold: "85%"
          for_time: "5m"
        annotations:
          summary: "磁盘inode使用率异常 {{ $labels.instance }}"
          description: "请关注! 磁盘inode使用率 {{ $value }}% >= 85%"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows环境本地部署Oracle11g r2实操手册

前言:一直在做其他测试,貌似都忘了Windows环境oracle安装,这是一个很早很早的安装记录了,放上来做个备录给到大家参考。 环境: (都是常规系统及工具,官网度娘搜索即可下载测试学习)…

通过无代码CDC工具实现Oracle实时同步到Mysql

Oracle数据实时同步需求 现代企业对于数据实时同步的需求日益迫切,特别是在涉及Oracle数据库的情况下。实时同步数据对企业来说至关重要,因为它可以确保不同系统之间的数据始终保持一致性和最新性,提供准确的决策支持和及时的业务反应。 针…

Leetcode-每日一题【725.分隔链表】

题目 给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。这 k 个部分应该按照在链表中出现的顺序排列&#…

在 JavaScript 中获取选中或突出显示的文本

本文将展示我们如何使用 DOM API 来让用户在屏幕上突出显示或选择文本。 DOM API 为我们提供了 getSelection() 方法,该方法允许我们获取用户选择的文本。 窗口对象可以直接访问这个方法。 让我们看看如何实际实现此功能。 使用 JavaScript 中的 window.getSelecti…

Vscode快速对比两个文件的不同部分

文件对比第一种方法: 打开vscode,打开文件或者文件夹 选中需要对比的文件 按住ctrl选择要对比的另一个文件,鼠标右键选择将已选项进行比较 结果如下: 文件对比第二种方法: 打开文件,点击鼠标右键 命…

牛客网论坛考研计算机组成原理笔记,GitHub已下载量已过百万

**前言:**看过很多书,但总是忘得很快。知识广度越大越容易接纳新东西,但从考察角度来说,自然是对某个方面了解越深越好。那些大而全的著作虽然每本都是经典中的经典,但实际工作中可能只用到其中的一小部分。我现在越发…

机器学习13: 使用 TensorFlow 进行二元分类(Binary Classification)编程实践

在【机器学习6】和【机器学习9】中,我们使用 TensorFlow 进行了“线性回归模型”和“组合特征”编程实践。本质上,其中采用的都是回归模型,也就是说,我们创建了产生浮点预测的模型,比如“这个社区的房子要花 N 千美元。…

基于matlab深度学习的多光谱图像语义分割(附源码)

一、前言 此示例演示如何使用 U-Net 对具有七个通道的多光谱图像执行语义分割。 语义分割涉及用类标记图像中的每个像素。语义分割的一个应用是跟踪森林砍伐,即森林覆盖率随时间的变化。环境机构跟踪森林砍伐,以评估和量化一个地区的环境和生态健康状况…

Flink消费kafka出现空指针异常

文章目录 出现场景:表现:问题:解决: tombstone : Kafka中提供了一个墓碑消息(tombstone)的概念,如果一条消息的key不为null,但是其value为null,那么此消息就是墓碑消息. …

echarts tooltip自定义线条样式及数据提示框内容

option {......tooltip: {trigger: axis,borderWidth: 0, // 去除数据提示框默认的边框axisPointer: {lineStyle: { // 设置hover时竖线样式color: {type: linear,x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0,color: rgba(128,200,244,0) // 0% 处的颜色},{offset: 1,colo…

【40000字】!最适合新手的Springboot+Vue项目

更多文章:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg2NDY3NjY5NA&actiongetalbum&album_id2053253027934863360#wechat_redirect hello我是索奇,本套项目对应bilibili视频,大家可以结合视频看哈,有些基础的只看…

2022年系统架构师论文(回忆版)

2022年11月6日,全国计算机等级下半年考试,在疫情压力下如期举行。 北京市软件架构师考试地点在北京市工贸技师学院(机电分院),地址:海淀区北四环北路132号(金泰海博大酒店北侧) 查看…

网络安全(黑客)自学笔记

建议一:黑客七个等级 黑客,对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域,越深入越敬畏,知识如海洋,黑客也存在一些等级,参考知道创宇 CEO ic(世界顶级黑客团队 0x557 成员…

chatgpt赋能python:吐血推荐的Python编程好玩的代码

吐血推荐的Python编程好玩的代码 近年来,Python 成为了全球最受欢迎的编程语言之一。Python 的简洁明了,易学易用,使得越来越多的开发者选择了 Python。Python 的生态系统非常丰富,有很多丰富有趣的库和代码可以供我们玩耍。在本…

使用MySQL根据原型字段创建表结构

⭐️ 不爱生姜不吃醋,原创不易,转载请注明原链接 ❗️ 注:本文写的是基于MySQL对数据库表结构进行的操作(DDL) 文章目录 一、数据库1.基本概念2.关系型数据库(RDBMS)3.数据模型4.SQL通用语法5.SQL分类 二.创建表结构1.…

关于nlohmann::json的简单使用

nlohmann::json的使用非常简单&#xff0c;只需要包含.hpp文件即可&#xff0c;这是它的官网https://github.com/nlohmann/json 简单使用&#xff1a; #include "json.hpp" #include <iostream>using Info nlohmann::json;int main() {Info info;std::cout &…

Java面试Day11

1. MySQL 事务有哪些隔离级别、分别有什么特点&#xff0c;以及 MySQL 的默认隔离级别是什么&#xff1f; 在MySQL中事务的隔离级别是为了解决常见的并发问题&#xff0c;在保证数据库性能的同时保持事务的隔离性&#xff0c;常见的并发问题有&#xff1a; 脏读&#xff1a;如果…

利用nginx/apache代理wss 实现 小程序 端口 反向代理

除了用Workerman自身的SSL&#xff0c;也可以利用nginx/apache作为wss代理转发给workerman 我就是栽在这大坑里&#xff08;nginx/apache代理wss&#xff0c;workerman部分就不要设置ssl&#xff0c;否则将无法连接&#xff0c;两个方法2选1&#xff09;官方推荐用nginx/apach…

基于matlab基于预训练的膨胀双流卷积神经网络的视频分类器执行活动识别(附源码)

一、前言 此示例首先展示了如何使用基于预训练的膨胀 3-D &#xff08;I3D&#xff09; 双流卷积神经网络的视频分类器执行活动识别&#xff0c;然后展示了如何使用迁移学习来训练此类视频分类器使用 RGB 和来自视频的光流数据 [1]。 基于视觉的活动识别涉及使用一组视频帧预…

数据结构07:查找[C++][红黑二叉排序树RBT]

图源&#xff1a;文心一言 | 提词&#xff1a;动漫风格 红黑树 少女#创意图# 考研笔记整理1.7w字&#xff0c;但是删除操作的代码是有一点问题的{无法正确处理红色结点的删除}&#xff0c;其它功能可正常使用&#xff0c;请小伙伴注意~~&#x1f95d;&#x1f95d; 第1版&…