Keyword: postfix, open files, tuning, performance
上個週末幫系上換 Mail Server,中間碰到了一些問題,花了將近一整天的時間解決,想紀錄一下。
在看這篇之前,最好對 Postfix 的架構有稍微的了解,這樣子比較知道我要講甚麼。
我碰到的問題是這樣子的,系上有一個 aliases 會展開成約 800 個 E-Mail Address,以前在 Debian 與 Exim 3.x 都很好,當換成 FreeBSD 與 Postfix 的時候,送信過來時,會害 Postfix 開太多檔案,導致 local(8) 抱怨 socket: Too many open Files!。
一開始,想說是我 kernel 一些限制沒有調大,前前後後我總計調過 kern.maxfiles、kern.maxfilesperproc、kern.maxsockets、kern.maxusers,結果都沒有效,而觀察 kern.openfiles 則發現,大概開到 6324 的時候就會爛掉。
下午在找原因的過程中,有找過一些資料,其中提到有人有類似的狀況,中間提到了可以調 “duplicate_filter_limit” 這個參數,不過我看到說他調到 4000(原本是 1000)也沒用,也就沒放在心上。
晚上九點左右的時候,在看 sample-resource.cf 的時候,突然想起來這個參數,於是就開成 20000,結果一切正常(還好我那時候有找到這個,不然我大概就已經瘋了吧)。
這個參數是說 local(8) 跟 cleanup(8) 最多可以記住多少收件人的位址。後來再觀察,調大之後,他就不會去開那麼多檔,推測應該是之前他沒法記住那麼多位址(800 多個裡面有些還有 .forward 之類的),因此就要一直去開檔查 aliases 跟 .forward,所以就爆炸了(調大之後,大約只開了不到 1000 個檔)。
0 Responses to “Postfix 與 Too many open files!”
Leave a Reply