GreenArrow Email Software Documentation

Cooperative Throttling

Overview

Cooperative Throttling allows you to coordinate Throttling between multiple instances of GreenArrow.

Cooperative Throttling requires use of GreenArrow Proxy which is enabled on the MTA using the greenarrow_proxy directive.

The GreenArrow Proxy server computes cluster-wide remote delivery throttling configuration (max delivery rate, max concurrent connections, and backlog size) based on the configurations specified on the MTA instances which are connected to it.

The computed limits are then enforced for all delivery attempts, cluster wide, that use this GreenArrow Proxy server.

Configuration

Each GreenArrow instance can configure greenarrow_proxy_throttle_reconciliation_mode to indicate how its throttling limits are intended to be used.

If the limits configured are intended to be per-server limits (for example, you want to deliver 350 messages per hour, per server you have running), you would use the reconciliation mode sum.

If the limits configured are intended to be per-cluster (for example, you want your cluster, as a whole, to be limited to 15,000 messages per hour), you would use the reconciliation mode average.

Cluster Throttle Status

GreenArrow provides a command hvmail_status dslots_throttlewait_cluster for reviewing the state of throttles both on the local instance (where you are running the command) and across the cluster as a whole (including all other GreenArrow instances connected to your GreenArrow Proxies).

The columns included in this report are:

all queues connections

The number of connections established to remote SMTP servers across all queues (ram/bounce/disk) on this instance (node), across the cluster (cluster), and the calculated limit (limit).

delivery speed

The delivery speed for this throttle.

pct used

The current portion of the messages per hour limit in use for this throttle.

msg/hour

The calculated limit on messages per hour for this throttle.

ram queue backlog

The number of first delivery attempts waiting to begin on this instance (node), across the cluster (cluster), and the total number of messages that may be in the backlog simultaneously (limit).

bounce queue backlog

The number of first delivery attempts (of bounce messages created by GreenArrow) waiting to begin on this instance (node), across the cluster (cluster), and the total number of messages that may be in the backlog simultaneously (limit).

disk queue backlog

The number of retry delivery attempts waiting to begin on this instance (node), across the cluster (cluster), and the total number of messages that may be in the backlog simultaneously (limit).

proxy (or) mtaid

If this delivery attempt is being made through a GreenArrow Proxy, the name of that proxy (as given to the greenarrow_proxy directive).

If this is a domain being throttled that is not included in an explicit throttling rule, the IP address ID.

Otherwise, the value (none).

throttle (or) domain

If this delivery attempt is being made through a GreenArrow Proxy, a global throttling key for this group of domains.

If this is a domain being throttled that is not included in an explicit throttling rule, the domain being throttled.

Otherwise, a string like tNNN (e.g. t13246) where NNN represents the local database id of the throttle.


Copyright © 2012–2024 GreenArrow Email