Postfix

限制 Postfix 記憶體

  • July 4, 2013

我在 1and1 上有一個類似於此配置的 VPS (512MB,最高可達 2GB)。我執行一個網路服務,我在其中抓取網路並在某個線上數據饋送發生變化時通過電子郵件和簡訊通知我的使用者。

當我發送電子郵件時,我只是讓 PHP 循環遍歷收件人列表並使用 mail() 函式發送電子郵件。每當我嘗試發送大量這些消息時,我的伺服器就會開始表現得很有趣。有時我什至無法執行“ls”,因為 shell 告訴我它“無法分配記憶體”。外殼無法使用,但我的網站執行良好。

Mail.err 包含:

Nov 14 17:30:09 s15351477 postfix/smtp[26000]: fatal: inet_addr_local[getifaddrs]: getifaddrs: Cannot allocate memory
Nov 14 17:30:09 s15351477 postfix/sendmail[25999]: fatal: username(1000): unable to execute /usr/sbin/postdrop -r: Success
Nov 14 18:29:14 s15351477 postfix/smtp[9911]: fatal: inet_addr_local[getifaddrs]: getifaddrs: Cannot allocate memory
Nov 14 18:29:14 s15351477 postfix/sendmail[9910]: fatal: username(1000): unable to execute /usr/sbin/postdrop -r: Success

此外,如果相關,我的 bean 計數器是:

Version: 2.5
      uid  resource                     held              maxheld              barrier                limit              failcnt
53907331:  kmemsize                 20779422             21041560             31457280             34603008              2989403
           lockedpages                     0                    0                  512                  512                    0
           privvmpages                 81488                82498               524288               576716                94640
           shmpages                     2831                 2831                32768                32768                    0
           dummy                           0                    0  9223372036854775807  9223372036854775807                    0
           numproc                        90                   91                  128                  128                 6603
           physpages                   32692                33531           2147483647           2147483647                    0
           vmguarpages                     0                    0               131072           2147483647                    0
           oomguarpages                32942                33781  9223372036854775807           2147483647                    0
           numtcpsock                     22                   23                  720                  720                    0
           numflock                       27                   28                  376                  413                    0
           numpty                          1                    1                   32                   32                    0
           numsiginfo                      0                    1                  512                  512                    0
           tcpsndbuf                  425888               441064              3440640              5406720                    0
           tcprcvbuf                  369200               376832              3440640              5406720                    0
           othersockbuf               268000               268464              2252160              4194304                    0
           dgramrcvbuf                     0                 8472               524288               576716                    0
           numothersock                  180                  182                  720                  720                    0
           dcachesize                 952146               966231              5242880              5767168                    0
           numfile                      3609                 3683                 8192                 8192                    0
           dummy                           0                    0                    0                    0                    0
           dummy                           0                    0                    0                    0                    0
           dummy                           0                    0                    0                    0                    0
           numiptent                      25                   25                  200                  205                    0

有什麼方法可以限制後綴以防止它像這樣淹沒系統嗎?還想知道:為什麼電子郵件使用這麼多資源,這些電子郵件只是短文本?

Postfix 沒有佔用你的記憶體;即使在一個載入的系統上(每天超過 100k),它也只消耗大約 100MB 的 RSS,電子郵件不斷地通過管道傳輸到外部程序。

記憶豬總是 PHP。除非您使用現代方式來服務它,否則它會快速消耗您的所有記憶體。

大多數 PHP 程式碼也會洩露一些激烈的東西。

減少 main.cf 中每個服務的預設最大並發程序數:

default_process_limit = 10

引用自:https://serverfault.com/questions/448877