Cooperative Throttling
- Table of Contents
- Overview
- Configuration
- Cluster Throttle Status
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.
|
|||||
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 |
|||||
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 |