Here are a few things you can do to improve the performance of your MailWizz app:
1. Make sure you have plenty RAM/CPU on your server. Really, you cannot expect to send million emails from your 4GB RAM vps and the server to remain snappy forever.
2. Try to use a server with SSD’s instead of regular hdd’s.
3. Try to use nginx instead of apache. Or a combination where apache serves static files and nginx serves dynamic ones.
4. Configure mysql/mariadb. This is extremely important since the default configuration of the database server, be it mysql or mariadb, will need attention in order to get the most out of it. See this article which explains what to do.
5. Make sure you understand how sending in MailWizz works and how it impacts performance. This article explains it in detail.
6. Enable campaigns queues as shown in this article.
7. Check out this article which shows you how to disable some of the most intensive checks in mailwizz. If you don’t use MailWizz as a saas app, you might be able to disable some of those checks.
8. Enable the removal of logs. Go to Backend > Settings > Cron > Delete logs settings.
9. If not using MailWizz as a SAAS app, you might want to decrease the number of days we store the delivery server logs from Backend > Settings > Cron and set “Delivery servers logs removal days” to a lower value.
10. See this article to enable redis for cache and mutexes. Please note that you have to have redis installed on your server.
11. We do an almost realtime checking for campaigns against their status in order to see when a campaign has been paused. This might add some considerable overhead, so you can disable it by adding the following param to your apps/common/config/main-custom.php:
'campaign.delivery.sending.check_paused_realtime' => false,
You can read more about app params in this article.
For all the above changes, make sure you fully understand what you do before you do it.