Server Management
Scaling for 100K+ Emails Per Day
Baseline Requirements
At 100K emails/day you need roughly 70 emails/minute sustained. A single queue worker can handle 10–20 sends/minute depending on SMTP latency. Scale accordingly.
Queue Worker Tuning
Increase Supervisor worker processes in /etc/supervisor/conf.d/acellemail.conf:
numprocs=8
Then:
sudo supervisorctl reread && sudo supervisorctl update
sudo supervisorctl restart all
Monitor queue depth:
watch -n 2 "redis-cli llen queues:default"
MySQL Tuning
Edit /etc/mysql/mysql.conf.d/mysqld.cnf:
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
max_connections = 300
query_cache_type = 0
innodb_flush_log_at_trx_commit = 2
Restart MySQL: sudo systemctl restart mysql
PHP-FPM Tuning
Edit /etc/php/8.2/fpm/pool.d/www.conf:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
Nginx Worker Connections
In /etc/nginx/nginx.conf:
worker_processes auto;
events {
worker_connections 2048;
}
Quick Checklist
| Area | Setting | Value |
|---|---|---|
| Queue workers | numprocs | 8–16 |
| Queue driver | QUEUE_CONNECTION | redis |
| MySQL buffer pool | innodb_buffer_pool_size | 50% RAM |
| PHP-FPM max children | pm.max_children | 50 |