• AIX文件系统/var空间100%的问题


    一、问题说明
    /var/spool/mqueue目录下出现了多个df打头的文件,导致/var空间最终100%


    EBANK_P570_MAIN/var/spool/mqueue#ls -l

    total 8732656

    -rw-r--r-- 1root system 571 Aug 20 2012 Qfq7JGw5K21643126

    -rw-r--r-- 1root system 569 Aug 23 2012 Qfq7MGvxch987418

    -rw-r--r-- 1root system 572 Jun 25 02:00 Qfs5OHxF6d1339552

    -rw-r--r-- 1root system 570 Jul 04 01:59 Qfs63HwefO1359972

    -rw-r--r-- 1root system 773 Jul 04 02:02 Qfs63I1DfN1790554

    -rw-r--r-- 1root system 570 Jul 06 02:00 Qfs65Hx5Vq1315640

    -rw-r--r-- 1root system 773 Jul 06 02:02 Qfs65I16Vp1483544

    -rw------- 1root system 760 Jul 06 02:39 Qfs65IaKdR1397376

    -rw-r--r-- 1root system 573 Jul 07 00:58 Qfs66GvJMf1332120

    -rw-r--r-- 1root system 0 Aug 23 2012 dfq7JGw5K21643126

    -rw-r--r-- 1root system 0 Aug 23 2012 dfq7MGvxch987418

    -rw-r--r-- 1root system 1153011528 Jul 06 02:00 dfs65Hx5Vq1315640

    -rw-r--r-- 1root system 1153012885 Jul 06 02:02 dfs65I16Vp1483544

    -rw------- 1root system 1153012885 Jul 06 02:39 dfs65IaKdR1397376

    -rw-r--r-- 1root system 1011801454 Jul 07 00:58 dfs66GvJMf1332120
    二、原因分析:
    1、查询资料:/var/spool/mqueue目录包含与队列中的每条消息关联的临时文件。即发送邮件前存放邮件的临时目录,每个定时任务执行时的输出结果都会以邮件的形式通知用户,邮件队列目录是/var/spool/mqueue,邮邮件队列包含四类邮件队列文件:数据文件、控制文件、临时文件和抄本文件。文件的格式如下:

    dfAA00312     数据文件

    qfAA00312     控制文件

    tfAA00312     临时文件

    xfAA00312     抄本文件

    2、进一步查看文件的内容,是crontab执行/ora_backup/rep/repsj/imp.sh脚本生产了大的mail邮件,导致/var空间满

    EBANK_P570_MAIN/var/spool/mqueue#more dfs66HxcE51216754

    Cron Environment:

    SHELL =/usr/bin/sh

    PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java14/jre/bin:/usr/java14/bin

    CRONDIR=/var/spool/cron/crontabs

    ATDIR=/var/spool/cron/atjobs

    LOGNAME=oracle

    HOME=/oracle


    Your "cron" job executed on EBANK_P570_MAIN onMon Jul 7 00:40:00 BEIST 201

    exportBATCH_AUTO_RUN=Y; . ./.profile; sh /ora_backup/rep/repsj/imp.sh


    produced the following output:


    20140423

    20140706

    。。。。。


     

    3、原因确认:由于crontab中的脚本输出内容过多,导致mail过大,最终/var空间满,因此解决方法如下

    a,脚本的输出重定向到/dev/null,由于脚本不再有输出,也就不会有邮件发出

       * * * * * a.sh> /dev/null 2>&1.

    b,crontab的前面添加MAILTO=""

    $ crontab -e

    At the top of the file, enter:

    MAILTO=""

    4、补充确认,通过监控系统趋势图确认原因

    最近系统/var的利用率图可以看出,

    1),最近/var空间的利用率一直在缓慢增长,6月26日左右有一个突然增长,但最近才出现了100%的问题

    2),每晚其实都有个利用率的高峰,但是到了6点钟,利用率就下降为正常了,这是因为6点钟定时任务清空了oracle用户的mail

    EBANK_P570_MAIN/#crontab -l oracle

    0 6 * * *   cat/dev/null > /var/spool/mail/oracle

    3),为什么大文件会出现在/var/spool/mqueue目录?

    通过在测试机测试,

    a, crontab生产的输出最先放在/tmp目录下,(对应图2 /tmp0:30开始空间利用率不断增加)

    b, crontab命令执行结束后,mv到/var/spool/mqueue目录下准备发送邮件给oracle用户,(此时/var空间突然增长)

    c, 正常情况下oracle用户接受,放在/var/spool/mail/oracle文件中

    d, 6点执行的定时任务情况oracle的mail邮件,对应图1的/var突然下降

    4,今日凌晨为什么没出问题?

    由于/var昨日清理的比较彻底,mqueue目录能够保存了需要发送的邮件,空间从9%增加到42%,然后6点钟被清空

     

    图1:/var空间利用率图

     

    图2 、/tmp文件系统利用率

     

    图3、今天/var利用率

    三、解决方案
    1、临时解决方法:

    快速清理方案,转移大数据文件到/backup/目录下

    mv /var/spool/mqueue/df* /backup/

    2、永久解决方案,因此也建议脚本的书写要重定向,特别是有大量结果输出的执行脚本

             脚本重定向到/dev/null,防止出现大日志文件

  • 相关阅读:
    多线程demo
    my parnter code review
    my code review
    思考题
    数组中最大子数组的和
    TestForGit
    say Hellow的测试类及测试结果
    读《Build To Win》感想
    随机生成300道四则运算
    思考题 程序员本计划在三天内完成任务,但在第三天的下午他发现了自己程序的弱点,他在想是否是自己采取另一种方法去解决它,但是需要额外的时间。如若反之,则会在后期团队会在集成方面花费时间。该怎么办?
  • 原文地址:https://www.cnblogs.com/tzhyy/p/10648582.html
Copyright © 2020-2023  润新知