On 20.08.2011 15:28, Hector Santos wrote:
Alessandro Vesely wrote:
For example, a mass mailer script that produces personalized messages for
each recipient can simply hand them to the MSA in the right order. The
number of seconds that a connection remains dormant needs just be enough for
the next message to be generated and submitted.
Agree, but only from the design perspective of one side to make it work at
the expense of presuming there is a unlimited number servers and there are no
other clients doing the same thing and the server capacity is rarely reached
so that server availability is not impacted and the server cost to maintain
steady state performance is minimal.
Disregarding MUA-to-MSA traffic, servers acting as SMTP client globally send
about the same number of messages that SMTP servers receive. Hence, their
availabilities must be just proportional to one another. Not unlimited.
Its a selfish idea from the standpoint that it considers its own benefits by
ignoring the impact at the receiver. But I do think its a useful method if
its prearrange with the receiver in the same way we white list specific
senders (i.e, Allow Relay IP tables, smart hosting, etc).
It is not selfish, since per-connection costs are experienced by receivers too.
This can be easily modeled and simulated using this formula:
C = R /(S+H)
R = Total number of available receivers
S = Average Session Time
H = Average Holding Time (CS cache wait time), and
C = Arrival rate of new clients
This model only takes into account a disadvantage of Connection Sharing. It
should have considered the possibility that a connection is actually shared
and multiple messages delivered during a single session. For example,
M = R /(S + (H + O)/N)
where the differences from above are
S = Average _transaction_ time,
M = Arrival rate of messages,
N = Average transactions per session, and
O = Overhead per session (TCP, TLS, EHLO, and QUIT.)
Example #1 - No CS consideration H=0
R = 100 receivers
S = 5 secs
Let's say S + O = 5 secs; e.g.
S = 4
O = 1
H = 0 secs
Then for the maximum efficient, high production steady state condition:
C = 100/(5+0) or 20 CPS (clients per sec)
Yes, disregarding queues, H = 0 implies N = 1, and thus M = C.
This means that all 100 receivers are busy 100% at all times. It is steady
state when C does not increase.
Example #2: CS considered, H=5
Let's say H = 5 _seconds_, since we said that's more reasonable than 5
minutes. For this oversimple model, the break even is at H = O*(N-1).
Indeed, if we hypothesize we receive an average of N = 6 messages per
session, we get
M = 100 /(4 + (5 + 1)/6) = 20 messages per sec, as in example #1.