运行环境:Linux x86_64
底层邮件 :qmail
脚本类型:shell
脚本内容:
测试脚本内容如下:
#!/bin/bash
#日志存放位置
Log=/home/sysadmin/zhaoyj/TestLog
echo -n > $Log
#统计文件大小
echo "`du -sh testtxt`" >> $Log
#记录开始发信的时间(以秒为单位)
BeginTime=`date +%s`
#发信一千封
for (( i=1;i<=1000;i++ ))
do
cat /home/sysadmin/zhaoyj/testtxt |mail -s "`date +%Y-%m-%d` `hostname` 'MMailTest--Number$i'" 收件地址
#发信的同时统计系统负载和邮件队列
if [ `expr $i % 100` == 0 ]
then
CPULoad=`w |grep "load average" |awk -F, '{print $4}'|awk -F: '{print $2}'`
MailQueue=`/var/qmail/bin/qmail-qstat |head -1|awk -F: '{print $2}'`
echo "when MailNumber=$i CPULoad=$CPULoad MailQueue=$MailQueue" >> $Log
fi
done
#记录发信结束的时间(以秒为单位)
EndTime=`date +%s`
#记录发信总共用的时间(以秒为单位)
UsedSeconds=`expr $EndTime - $BeginTime`
#时间转换函数
funConvert()
{
if [ "$1" = "-time" ]
then
let "vard=$2/86400" #将秒转化成天数
let "varh=$2%86400/3600" #将秒转化成小时
let "varm=$2%86400%3600/60" #将秒转化成分
let "vars=$2%86400%3600%60" #转化成分钟以后剩余的秒数
if [ $vard -gt 0 ] #如果天数大于0,输出的时间格式为“几d几h几m几s”
then
echo "${vard}d${varh}h${varm}m${vars}s"
elif [ $varh -gt 0 ]
then
echo "${varh}h${varm}m${vars}s"
elif [ $varm -gt 0 ]
then
echo "${varm}m${vars}s"
else
echo ${2}s
fi
fi
}
UsedTime=`funConvert -time $UsedSeconds` #调用函数funConvert进行时间转换
echo "UsedTime=$UsedTime" #向屏幕输出“发信所用的时间”
AvgSpeed=`expr $UsedTime / 1000` #计算平均发信速度
echo "AvgSpeed=$AvgSpeed" #向屏幕输出“平均发信速度的值”
我的测试结果:
脚本中加入统计系统负载和邮件队列的情况下:
1)发信文件大小是288K,日志情况
288K testtxt
when MailNumber=100 CPULoad= 1.07 MailQueue= 992
when MailNumber=200 CPULoad= 1.07 MailQueue= 1078
when MailNumber=300 CPULoad= 1.30 MailQueue= 1170
when MailNumber=400 CPULoad= 1.30 MailQueue= 1258
when MailNumber=500 CPULoad= 1.30 MailQueue= 1350
when MailNumber=600 CPULoad= 1.36 MailQueue= 1446
when MailNumber=700 CPULoad= 1.36 MailQueue= 1542
when MailNumber=800 CPULoad= 1.49 MailQueue= 1634
when MailNumber=900 CPULoad= 1.49 MailQueue= 1727
when MailNumber=1000 CPULoad= 1.49 MailQueue= 1822
UsedTime=20s
2)发信文件大小是20K,日志情况【有队列基数的情况】
20K testtxt
when MailNumber=100, CPULoad= 0.05 MailQueue= 794
when MailNumber=200, CPULoad= 0.05 MailQueue= 891
when MailNumber=300, CPULoad= 0.05 MailQueue= 988
when MailNumber=400, CPULoad= 0.05 MailQueue= 1085
when MailNumber=500, CPULoad= 0.37 MailQueue= 1185
when MailNumber=600, CPULoad= 0.37 MailQueue= 1282
when MailNumber=700, CPULoad= 0.37 MailQueue= 1381
when MailNumber=800, CPULoad= 0.37 MailQueue= 1479
when MailNumber=900, CPULoad= 0.37 MailQueue= 1576
when MailNumber=1000, CPULoad= 0.37 MailQueue= 1673
UsedTime=7s
3)发信文件大小是88K,日志情况【清除队列的情况下】
88K testtxt
when MailNumber=100, CPULoad= 0.00 MailQueue= 87
when MailNumber=200, CPULoad= 0.40 MailQueue= 183
when MailNumber=300, CPULoad= 0.40 MailQueue= 274
when MailNumber=400, CPULoad= 0.40 MailQueue= 366
when MailNumber=500, CPULoad= 0.40 MailQueue= 460
when MailNumber=600, CPULoad= 0.40 MailQueue= 544
when MailNumber=700, CPULoad= 0.93 MailQueue= 634
when MailNumber=800, CPULoad= 0.93 MailQueue= 719
when MailNumber=900, CPULoad= 0.93 MailQueue= 819
when MailNumber=1000, CPULoad= 0.93 MailQueue= 896
UsedTime=11s