[原创]_clientmqueue被填满的追踪及解决_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2314 | 回复: 1   主题: [原创]_clientmqueue被填满的追踪及解决        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2015-4-27 14:36:47 | [全部帖] [楼主帖] 楼主

一台服务器突然停止了服务,毫无征兆的停止了。最后发现是/var满了:

%df -h /var
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad0s1d    19G    19G    -200M    120%    /var


再向下追查,发现在/var/spool下面:

# du -d 1 -h /var/spool/
4.0K    /var/spool/lock
4.0K    /var/spool/opielocks
8.0K    /var/spool/output
4.0K    /var/spool/mqueue
19G    /var/spool/clientmqueue
4.0K    /var/spool/lpd
19G    /var/spool/


那clientmqueue里面到底有什么呢?
习惯性的ls一下——麻烦大了,基本死机了,半天没结果,三分钟后ctrl+C才中止,看来是别想知道里面的文件了,但是可以知道里面的文件数:

# ll | wc -l
18329323


好家伙,近2千万个文件!

看不到文件名,连vi都不行,还是请出find大法找几个文件看看吧:

find /var/spool/clientmqueue -name "*" | more
# find /var/spool/clientmqueue -name "*" | more
/var/spool/clientmqueue
/var/spool/clientmqueue/dft3NKR6v4090134
/var/spool/clientmqueue/dft3NKR6vO090134
/var/spool/clientmqueue/dft3NKR61v090134
/var/spool/clientmqueue/dft3NKR6wf090134
/var/spool/clientmqueue/dft3NKR6x6090134
/var/spool/clientmqueue/dft3NKR602090134
/var/spool/clientmqueue/dft3NKR65m090134


随便找一个文件看看内容,终于在最后找到了一点蛛丝马迹:

cat /var/spool/clientmqueue/dft3NKR6vO090134
……
Message-Id: <201411091900.sA9J00mw088804@ss.test.com>
From: root (Cron Daemon)
To: root
Subject: Cron <root@ss> /usr/local/bin/php /zfs/log/block.php
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
……


原来是cron,又查看了其他的文件,基本上都是cron,有系统本身的daily和month等,也有自已定义的这个block.php,看样子,cron挺尽责,每一次执行都会发一封邮件给root,但长期这样也不是太好,把/var填满了还是比较麻烦的。
再继续找cron为什么给root发信:

man cron
……
-m mailto
Overrides the default recipient for cron mail.  Each crontab(5)             without MAILTO explicitly set will send mail to the mailto mail null string, usually specified in a shell as '' or "".
……


里面没有说具体的情况,但是提供了一个-m参数,来指定发送的邮件,同时还提到,把它设置为null,或者把MAILTO变量将不再发信,有了这两句,那就好办了:
方法1、到/etc/rc.d/cron里面,加个-m ‘’参数;
方法2、到/etc/crontab里,加上MAILTO=””变量,注意还要修改/var/cron/tab里面的文件,或者用crontab -e来修改;
方法3、FreeBSD标准的做法,用rc系统给cron传去-m变量:在rc.conf中添加一行:

cron_flags=” -m “


至此,/var/就清静多了。

这个只能去掉cron的邮件,要想彻底清静,最好再加上几行,把每日、每周、每月的自动执行也彻底禁止掉,否则还会有部分邮件,在periodic.conf中添加:

daily_clean_hoststat_enable="NO"
daily_status_mailq_shorten="NO"
daily_status_include_submit_mailq="NO"
daily_status_mail_rejects_enable="NO"
daily_submit_queuerun="NO"


如果希望记点日志,也可以用下面的参数修改一下记录的方式,让periodic采取文件的方式而不是邮件的方式:

 daily_output="/var/log/daily.log"
weekly_output="/var/log/weekly.log"
monthly_output="/var/log/monthly.log"




赞(0)    操作        顶端 
ainy
注册用户
等级:中士
经验:221
发帖:0
精华:0
注册:2015-4-27
状态:离线
发送短消息息给ainy 加好友    发送短消息息给ainy 发消息
发表于: IP:您无权察看 2015-4-28 9:42:59 | [全部帖] [楼主帖] 2  楼

啊 西 吧 so da s ne



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论