欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一例qmail外发邮件慢的解决方法 F#脚本 

程序员文章站 2022-07-14 21:06:43
...

照以往案例,首先检查dns,服务器上nslookup后,一切正常。

 

查看下qmail当前队列状态,

qmailctl queue|more

出现如下信息

messages in queue but not yet preprocessed: 51,观察了一段时间,这个值一直将不下来,说明qmail-send运行异常

 

跟踪当前日志,

tail -f /var/log/qmail/current |tai64nlocal 

有不少类似“warning: unable to stat mess/15/3629875” 的消息出现,这些队列任务应该已经损坏了,qmail-fix的动作太大,可以直接动手删除,注意先停止qmail服务

  

qmailctl stop

 

find /var/qmail/queue/ -name  队列ID  | xargs rm -f

因为损坏队列比较多,通过脚本执行

more /var/log/qmail/current |tai64nlocal |grep -e "^2011-05-12 23:10:23" |grep "warning: unable to stat mess" | awk '{ print $7}'|sed -e 's/mess\/[0-9]\+\///' > /var/work/badQueueId.log

    上面是从current日志中,找出最新的损坏队列id号,新建clearNotPreProcess.sh如下

   

#!/bin/sh
#clearNotPreProcess.sh
warnlogfile="/var/work/badQueueId.log"
for line in `cat $warnlogfile`;
do
 find /var/qmail/queue/ -name $line | xargs rm -f;
done;

   执行./clearNotPreProcess.sh 批量删除

   

    开启qmail服务

   

qmailctl start     

 

再看看qmail运行状态

  

qmailctl stat

    messages in queue but not yet preprocessed: 0

 

凡事都有但是,发件仍然很慢,睁大眼睛看current日志

    status: local 0/30 remote 39/40  ,并发数接近用满

调整并发参数,将 /var/qmail/control/concurrencyremote 的数值调到190,重启qmail,问题解决。

 

小注意点:qmail在队列繁忙时,经常不能一下停掉,多试几次,耐心等待,尽量避免去强杀qmail-remote进程

 

相关标签: F# 脚本