我在1和1上有一个VPS,类似于这个配置 (512 2GB,突发到2GB)。我运行一个web服务,在那里我爬行网络,并通知我的用户通过电子邮件和短信时,一个特定的在线数据提要改变。
当我发送电子邮件时,我只有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有什么办法我可以节流后缀,以防止它淹没系统这样?还想知道:为什么电子邮件使用这么多资源,这些电子邮件只是短文本?
发布于 2012-11-16 12:52:28
Postfix不使用您的内存;即使在加载的系统上(每天超过100 k),它也只消耗大约100 to的RSS,电子邮件不断地被发送到外部进程。
最重要的是PHP;除非您使用现代的方法来服务它,否则它会很快地消耗您所有的内存。
大多数PHP代码也泄露了一些凶猛的信息。
发布于 2013-07-04 09:00:03
减少main.cf中每个服务的最大并发进程的默认数量:
default_process_limit = 10https://serverfault.com/questions/448877
复制相似问题