ExtMail服务器社区's Archiver

tinazhou004 发表于 2010-5-31 21:53

postfix每分钟发送的上限如何统计呢?

postfix每分钟发送的上限,和每封email的大小以及带宽之间是什么关系呢?请问各位,有什么办法可以统计postfix实际每分钟发送出去的邮件数量呢?xie谢谢各位高手赐教

edit 发表于 2010-6-1 18:26

每分钟数量,这个不好统计吧,一般都是以天为单位

tinazhou004 发表于 2010-6-2 09:12

回复 3# edit 的帖子

其实说直接点就是能够统计postfix能够接收邮件的上限,这样好得出一个合理的上限值,在这个理论值的基础上我们就可以适当调控推到postfix的速度,从而使potfix的接和发达到一种平衡,谢谢

sunfc 发表于 2010-6-2 16:09

我也遇到 类似的问题 需要估计一下接收邮件速度的上限

我刚接触postfix,,,不知道参数理解的对不对,,计算对不对,,希望大家看看,,一起讨论下
假设 参数如下
default_process_limit = 100
in_flow_delay = 1s
<1> 若同时有大量邮件进入, 那么处理前100封,并且后面的等待1s,
假设 100封邮件在1s内处理完,则 再处理后面邮件中的前100封,
如此,速度应该是100封/秒 = 6000封/分
<2> 若1s钟无法处理完100封,只处理了p封,p<100, 则1秒等待后,
后面的邮件中再装入p封,总共还是100封邮件,再处理1s
如此,速度应该是p封/秒 = 60*p封/分

tinazhou004 发表于 2010-6-2 18:44

回复 5# sunfc 的帖子

对于
default_process_limit = 100
in_flow_delay = 1s
也感觉是和这些参数有关,还有initial_destination_concurrency还有default_destination_concurrency_limit,以及default_destination_recipient_limit这几个参数都是和发送的速度有关系的,至于你说的in_flow_delay = 1s理解上不知道是不是正确的,我这边有一段可以参考
in_flow_delay (default: 1s)
   Time to pause before accepting a new message, when the message arrival rate exceeds the message delivery rate. This feature is turned on by default (it's disabled on SCO UNIX due to an SCO bug).
    With the default 100 SMTP server process limit, "in_flow_delay = 1s" limits the mail inflow to 100 messages per second above the number of messages delivered per second.
    Specify 0 to disable the feature. Valid delays are 0..10.

很高兴能和你一起讨论

tinazhou004 发表于 2010-6-2 19:22

回复 5# sunfc 的帖子

default_process_limit = 100是一个默认值啦,但是直接影响的是initial_destination_concurrency和default_destination_concurrency_limit这两个参数,因为initial_destination_concurrency 的上限是default_process_limit = 100

sunfc 发表于 2010-6-3 17:05

回复 6# tinazhou004 的帖子

那段英文的意思好像是 如果按照默认值
default_process_limit = 100
in_flow_delay = 1s
那么 接收速度 <=发送速度+100(messages/s)
---------------------
那个 default_process_limit = 100 是 一个传输(transport)可以打开的进程数
还不是 投递的数量,
每个传输可以同时投递的数量受这个 限制 default_transport_concurrency_limit
一共可以开几个transport 我还不知道
那个default_destination_concurrency_limit是一个传输中的同一个目的地址的上限
应该小于default_transport_concurrency_limit
但是我没有找到default_transport_concurrency_limit的说明
现在的postfix不归我管 ,我只是要写个应用发许多邮件,,,所以需要估计。。。
postfix也只是这个星期刚接触。。。

tinazhou004 发表于 2010-6-3 17:12

回复 8# sunfc 的帖子

推荐你一个网站 [url]http://www.swissrave.ch/mirror/postfix/postconf.5.html#qmgr_message_active_limit[/url]
感觉  transport_destination_concurrency_limit  这个参数就是你所说的 “default_transport_concurrency_limit”

tinazhou004 发表于 2010-6-3 17:13

回复 8# sunfc 的帖子

你有qq号吗?我的是413374481可以交流下

tinazhou004 发表于 2010-6-3 17:28

回复 8# sunfc 的帖子

其实 default_process_limit = 100 是MDA在发送到同一destination(同一域名)的上限值,而MDA第一次尝试发送的时候是以initial_destination_concurrency(默认值是5)为参照的,可以修改这个值,只是不能超default_process_limit 规定的100,default_destination_concurrency_limit是在MDA尝试发送initial_destination_concurrency(默认值是5)规定的5后发现发送正常后按照default_destination_concurrency_limit规定的值发送,但也是针对某个destination来发送的,而postfix每次发送给MDA又有一个参数来限制default_destination_recipient_limit 来进行规定。

tinazhou004 发表于 2010-6-3 17:53

回复 8# sunfc 的帖子

default_destination_concurrency_limit
可能值:纯数值            默认值:20
传输服务(定义于master.cf)对于同一目的地同时投递量得上限。如果没明确规定上限,则以 default_destination_concurrency_limit为默认值。请注意,此参数得限制对象是“目的地”,而非“传输服务”本身。决定各个传输服务同时投递量得上限得参数是default_transport_concurrency_limit。
范例:      default_destination_concurrency_limit = 20
--------------------------------------------------------------------------------------------------------------------------------------
default_process_limit
可能值:纯数值            默认值:100
任何传输服务可同时启动得进程上限。如果你不要刻意限制各个传输服务得进程数,则以default_process_limit参数得值为限制。请注意,此参数得限制对象是各个“传输服务”,如果要针对个别“目的地”做限制,应该使用default_destination_limit参数。
范例:      default_process_limit = 100
--------------------------------------------------------------------------------------------------------------------------------------------
感觉default_destination_concurrency_limit 是针对某个接收域(destination)来做限制的,而第一段所说的default_transport_concurrency_limit是针对传输服务而言的,但是都没有找到这个参数的值,而postfix中的默认参数中也没有设定这个参数的值,反而觉得这个值就是第二段规定的default_process_limit ,因为有提到说“此参数得限制对象是各个“传输服务””,所以不知道理解的对不对

tinazhou004 发表于 2010-6-7 16:54

回复 8# sunfc 的帖子

观察下来,感觉
default_process_limit = 100
in_flow_delay = 1s
<1> 若同时有大量邮件进入, 那么处理前100封,并且后面的等待1s,
假设 100封邮件在1s内处理完,则 再处理后面邮件中的前100封,
如此,速度应该是100封/秒 = 6000封/分
<2> 若1s钟无法处理完100封,只处理了p封,p<100, 则1秒等待后,
后面的邮件中再装入p封,总共还是100封邮件,再处理1s
如此,速度应该是p封/秒 = 60*p封/分
按照你之前的理解是正确的,但是实际的效果好像不是这个理论值,因为default_destination_concurrency_limit这个参数定义了同一destination每次能够最大限度的发送多少,这个也在一定程度上限制了你之前所定义的理论上限。对于我对上一层的解释,你有什么看法呢?谢谢

sunfc 发表于 2010-6-8 15:56

回复 13# tinazhou004 的帖子

流程大概这样:
email coming
---> smtpd--->cleanup--->incoming queue--->active queue--->smtp--->
desitination
default_process_limit  会被 master.cf改写,而有的进程不受这个参数限制
----
<1>接收速度主要受到 smtpd cleanup 限制, 其中 cleanup 进程数量没有限制,smtpd 默认是100。
最多100个smtpd 进程,但是同一个进程1秒钟内可以接收c封邮件,这时候速度是 100*c封/s  ,
如 c = 2   200封/s     
如果设置了in_flow_delay  = 1s 的限制,smtpd受到邮件 下一封至少要等待1s,
所以最多 100封/s
我这的服务器日志 中最大的时候是 25封/s   13个 smtpd  所以 c =2  不过这个值随着数量增加会变化。
---
<2>发送速度主要受到 smtp 与 目的服务器的限制 其中 目的服务器影响很大,,如果对于同一目的服务器并发数量太大,会受到你说的那个default_destination_concurrency_limit的限制,而且目的服务器可能会限制同一源地址不停发信,中间会加入delay 延迟,那么发信速度会大大降低,这主要是为了防止垃圾邮件。
发送速度< 接收速度  
所以 发送速度 会小于 100封/s   如果 以 20并发速度 每个进程 速度 是 d封/s
如果都是发送给同一个服务器或 少数几个,,速度可能主要取决于 default_destination_concurrency_limit =  20
速度就是 20*d封/s    如 d=2  就是  40 封/s

最近有点忙啊 回复的有点晚 不好意思。。 希望别的大虾 也可以 给些意见,,,

tinazhou004 发表于 2010-8-13 16:42

回复 13# sunfc 的帖子

最近又回来看邮件发送的速度问题,针对你所说的有几个疑问,不知道你还会不会回来回答了:
一:对于你所说的,“我这的服务器日志 中最大的时候是 25封/s   13个 smtpd  所以 c =2  不过这个值随着数量增加会变化。”  其中“25封/s   13个 smtpd”是怎么来的呢?谢谢。  感觉按照您的说法,这些参数中只有进程上限数是定的100,而其他的都是变数。其中“c封邮件” 中的c代表什么呢?是一个可以设置的数,还是某个参数?谢谢

二:对于您第二点中说的“20并发速度” 不是很理解,感觉应该是“20并发进程”不是速度,还有和default_destination_concurrency_limit =  20之间又有什么关系呢?呵呵,我比较愚笨,不是看的很明白,烦请您解释下,谢谢

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.