Postfix 队列清理
Postfix 隊列清理
?
今天有同事反映發郵件速度慢,登錄了郵件服務器的后臺看一下(我們的郵件服務器是postfix+dovecot+mysql+extmail+extman
搭建的基于mysql的虛擬用戶),如圖
郵件隊列已經達到了80000封,然后我看了一下負載,已經達到20多了…….
大家都清楚負載一旦達到這個數值,服務器的性能肯定已經相當差了。這里就有問題了,隊列這么多如何清理呢?
如果是把隊列全部清除的話很簡單:postsuper –d ALL 就ok了。但是這樣操作會產生很多問題,有的正常的還沒有發送的隊列也會被清掉;
假如一個一個的清理,那太要命了,怎么辦呢?我用postqueue –p查看了一下,發現隊列里的日期的兩個特點,一是日期排列不規律,
第二個特點是日期只有最近5天的。Ok,有辦法了。
這是我寫的一個腳本:
#!/bin/bash
/usr/sbin/postqueue -p|egrep '(Nov 8|Nov 9)' > queue1.txt
/usr/sbin/postqueue -p|egrep '(Nov 8|Nov 9)'|awk '{print $1}' > queue2.txt
for i in `cat /root/queue2.txt`
do
/usr/sbin/postsuper -d $i
done
這個腳本的作用是把隊列當中日期為8號和9號的的隊列寫到一個文件queue1.txt(包含日期等信息),queue2.txt(只包含隊列號);
然后用一個for循環來把queue2.txt里面的所有的隊列都清除掉。執行完腳本,過幾分鐘再看監控圖:
Ok,隊列少了很多,而且服務器的負載也已經小于5了。
希望這個腳本對廣大管理員有用,也希望大家有好的意見多提一下,歡迎大家跟我留言交流。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Postfix 队列清理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《.NET设计规范 约定、惯用法与模式》
- 下一篇: 虚拟机中在红帽的Linux 下安装yum