Rate Limits, Failover, Observability
Production tuning for SES throughput, multi-region fallback, logs, metrics, and tracing.
Rate Limits, Failover, Observability
Rate Limits
SES accounts have send-rate quotas. Configure Vortos to match your account instead of discovering the limit through throttling.
$config->rateLimit()
->maxSendRate(14)
->burst(14)
->waitTimeoutMs(5000);Check provider quota:
php bin/console vortos:ses:quotaBest practices:
- Start with one relay worker.
- Match
maxSendRate()to the lowest SES quota across active regions. - Increase worker count only after observing database locks, outbox lag, provider throttles, and application metrics.
- Treat throttling as a capacity signal, not a normal control loop.
Multi-Region Failover
Set a fallback SES region:
$config
->region('us-east-1')
->fallbackRegion('us-west-2');The circuit breaker prevents repeated attempts against a failing region:
$config->circuitBreaker()
->failureThreshold(5)
->resetTimeoutSeconds(60);Verify identities in every sending region
SES identity verification, DKIM, configuration sets, and production access are region-specific. A fallback region that is not fully configured is not a real fallback.
Observability Defaults
The package integrates with the framework logger, tracing, and metrics packages. All are enabled by default at the SES package level.
$config->observability()
->logging(true)
->tracing(true)
->metrics(true);Global opt-out:
$config->observability()
->logging(false)
->tracing(false)
->metrics(false);Section-level opt-out:
use Vortos\AwsSes\Config\AwsSesObservabilitySection;
$config->observability()
->disableLoggingFor(AwsSesObservabilitySection::RateLimit)
->disableTracingFor(AwsSesObservabilitySection::Webhook)
->disableMetricsFor(AwsSesObservabilitySection::Audit);Typed sections:
SendOutboxWebhookSuppressionRateLimitAudit
Operational Signals
Track at least:
- Outbox pending count.
- Oldest pending outbox age.
- Relay success and failure counts.
- Provider throttles.
- Suppressed recipient rejections.
- Bounce and complaint counts.
- Send latency by driver and region.
Privacy
Email addresses are personal data. Keep logs and traces high-signal but avoid putting full message bodies or sensitive payloads into log lines. Use IDs, hashes, or domain-level counters where possible.