sendmail狂占进程,导致平均负载升高;

实操:

#tail -100 /var/spool/mail/root

#mail

 

--------------------------------------------------

停止服务后,重启服务,然后:
# tail -f /var/log/maillog
结果全是:
grew WorkList for /var/spool/mqueue to
于是:
#cd /var/spool/mqueue
#du -sh
返回5G
执行:
# ls|xargs rm -f
------------------------
*.**.*.* 上sendmail进程疯狂占用cpu,导致平均负载
到6多;service sendmail 后,平均负载下降了;
检查/var/log/maillog tail -50 maillog
很多报 stat=Deferred: Connection refused by [127.0.0.1]
----------------------------------
检查:
[root@localhost log]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
[root@localhost log]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
[root@localhost log]#

============================================

参考:

 

http://magiczhang1004.wordpress.com/2009/12/03/top%E9%87%8C-wa%E3%80%81load-average-%E5%81%8F%E9%AB%98%E7%9A%84%E6%95%85%E9%9A%9C%E5%A4%84%E7%90%86%E4%B8%80%E5%88%99/

 

手上有一台服务器 一直不太正常 top里面%wa一直50以上 load average一直25.。

  前几天终于有空了 于是花些时间整了整。

 

  一开始还是从top着手

  wait高 平均负载高很明显就是CPU等待数据处理 瓶颈应该是在硬盘上

  用IOSTAT –x 可以看到 %util高到恐怖~ 99.6%

  看top里面的进程 状态为D的是不可中断的睡眠状态 就是处于锁状态下

    这种 很有可能是导致平均负载高的罪魁祸首

 

  我这里是sendmail

     大概同时有4、5个sendmail进程在里面处于D状态

     联想到之前检查硬盘的时候maillog增长非常迅速,于是tail了一下

     一看超夸张 一秒钟刷几十条

      sm-msp-queue[26035] Connection refused by [127.0.0.1]

    这种错误log 这个屏幕就满屏满屏的往上刷 原来这台服务器发信量这么大啊。。

      每天的maillog都有4G多 原来是这个原因

    vi /etc/mail/sendmail.cf

     找

   O DaemonPortOptions=Port=smtp,Addr=X.x.x.x,Name=MTA

     这么一行

     改成

   O DaemonPortOptions=Port=Name=MTA

     这样就监听所有接口了

     回到top下看 load average下到了5.多~差别这么大,

       可还是不对啊~任务负载5.多还是偏高

    回到tail -f的日志端 这次不刷找不到127.0.0.1的错了

     在刷着发信记录 还是每秒钟十多条的样子~

    难道还是日志写磁盘的问题么

      vi /etc/syslog.conf

      把 mail.* 改成mail.error

    这样子maillog就只记录错误以上程度的日志了

      tail -f日志

     恩。。屏幕总算不刷了 可是每隔十几秒就会跳一句

       grew WorkList for /var/spool/clientmqueue   10000

     这个数字不断往上涨。。

       考啊 信原来都没法出去 堆积在队列里面啦~几分钟就几万封信堆着了

           /var/spool/clientmqueue 瞬间涨到了几个G

     没办法 重新把mail日志打开到INFO档

       一条条仔细看日志记录

         发现好像是域名的解析问题

         vi /etc/hosts

         把localhost、local、主机名.域名 全都放到 127.0.0.1里面

     继续看日志。。

       又换了种错~

         里面有提到postmaster这个账号

         于是继续到/etc/aliases里面去看

            真的有postmaster这个转发账号

            可是最后到postmaster这里就没有再转发的方向咯 有一条转向root的注释

            想想还是不要转到root了。。

 

        新建一个postmaster账号看看

        信瞬间就进来了 结果进个mail都花了好久 q退出来好久没反应 过了段时间说多少多少mail已经保存到了邮箱

          不行队列还是排着 继续往上涨

        翻了一封信 看说主要是XX几天前的一封信没有发出去 失败了等等的提示信息

         恩。。/var/spool/mail下面postmaster的账号又在不断增长

           这个不是和不断写错误日志结果一样 狂写硬盘么。。

 

       来个狠的算了 把到postmaster的邮件全部转到null里面去

            在/etc/aliases 里面把postmaster: /dev/null

        删了postmaster账号

 

       ok了,邮件队列开始慢慢往下跑了。

 

         世界太平了。

 

 

http://bbs.csdn.net/topics/190066942

 

rc.conf中加入
sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

保存后,重启.
rm -r /var/spool/mqueue

是不是sendmail的配置没有限制转发,被当成垃圾邮件中转站了
tail -n 100 /var/log/mail.log 

posted @ 2013-03-05 18:04  陳聽溪  阅读(1968)  评论(0)    收藏  举报