On Sat, May 11, 2013 at 07:22:48PM +0200, Patrik Rak wrote:

> BTW, perhaps I wasn't quite clear above when I said those messages
> dominate the queue. I meant it like their amount in the active queue
> is significant and prevailing, but not that they are really filling
> the active queue entirely. Rather than addressing the
> full-active-queue bottleneck (which you have most likely responded
> to), I was addressing the all-delivery-agents-busy bottleneck.
> Especially in more limited environments where increasing the
> delivery agent limit tenfold or more is not a viable option.

So you want to desludge the outbound delivery agents, by dedicating
a subset of the process slots to fresh mail.  This does not need
a second transport.  Rather, just do that within a single transport!

The queue manager knows how many active deliveries it has scheduled
for each transport.  Suppose we give the queue manager a per-transport
upper bound on the number of concurrent deliveries of previously
deferred messages. Then the remaining process slots are for fresh
mail only, and fresh deliveries cannot be starved.

This largely solves the problem, and is much simpler to configure:

    # Out of a total of $default_process_limit (100), leaving 20
    # for fresh mail.  Adjust appropriately when master.cf or
    # default_process_limit are changed.
    #
    smtp_deferred_concurrency_limit = 80

If the queue-manager were changed to read master.cf and thus know
delivery agent process limits, then the above could be a percentage,
or a fixed number of slots could be reserved for new mail.

This is much simpler than configuring additional transports.

-- 
        Viktor.

Reply via email to