Skip to main content

On Premise Engine - Virtual Machine Sizing

Use this to figure out how big your virtual machine should be for the On Premise Engine.

General Performance

  • The average mailbox has 18K emails per year that are not internal

  • Each CPU core can process 4K emails per hour

  • 2 GB of RAM per core

History Scanning

Targeting 4 days of processing for history.

1 Year of History (18,000 emails/mailbox)

  • 1 to 10 mailboxes: 2 cores

  • 11 to 20 mailboxes: 2 cores

  • 21 to 50 mailboxes: 3 cores

  • 51 to 200 mailboxes: 10 cores

  • 201 to 500 mailboxes: 24 cores

  • 501 to 1,000 mailboxes: 47 cores

  • 1,001 to 2,000 mailboxes: would need ~94 cores for 4 days, which exceeds the 48 core ceiling. Capped at 48 cores, expect roughly 8 days instead of 4.

2 Years of History (36,000 emails/mailbox)

  • 1 to 10 mailboxes: 2 cores

  • 11 to 20 mailboxes: 2 cores

  • 21 to 50 mailboxes: 5 cores

  • 51 to 200 mailboxes: 19 cores

  • 201 to 500 mailboxes: 47 cores

  • 501 to 1,000 mailboxes: would need ~94 cores for 4 days, which exceeds the 48 core ceiling. Capped at 48 cores, expect roughly 8 days instead of 4.

  • 1,001 to 2,000 mailboxes: would need ~188 cores for 4 days, which exceeds the 48 core ceiling. Capped at 48 cores, expect roughly 16 days instead of 4.

Ongoing Processing

Once history scanning is done you can downscale to this configuration.

  • 1 to 10 mailboxes: 2 cores

  • 11 to 20 mailboxes: 2 cores

  • 21 to 50 mailboxes: 2 cores

  • 51 to 200 mailboxes: 2 cores

  • 201 to 500 mailboxes: 2 cores

  • 501 to 1,000 mailboxes: 4 cores

  • 1,001 to 2,000 mailboxes: 8 cores

This has enough headroom so that if it gets up to 7 days behind for some reason it can catch up in 24 hours.

🚀 Use Azure Server for best Performance

Since a lot of our customers are using Azure we suggest using an Azure VM. We've seen customers have trouble getting the On Premise Engine running fast enough in their own data centersdue to slow proxies, old CPUs or over provisioned servers. We highly suggest using an Azure cloud server for best performance.

We recommend a server like Standard_F2as_v6 or a bigger version like Standard_F16as_v6.

Do not use the B family of CPUs because they are burstable and the email processing get throttled quickly.


RAM Requirements

You should allocate at least 2 GB of RAM per CPU.

Cores, not logical processors

Don't count logical processors as part of the core count.

For example, if you have 8 cores and 16 logical processors then only 8 are "real" cores. The other 8 are hyperthreading cores. You'll never get your performance above 50% when looking at CPU usage based on logical processors. If you're at 50% you're using 100% of your cores.

The important part is that the two logical processors share the same Execution engine, meaning that the units that make up the core are not duplicated. Once, for example, the arithmetic unit is used by one thread, it cannot be used by the other thread. This prevents total parallelism, so does not allow two threads to execute in parallel instructions of the same type - one has to wait for the other to finish.

has_hyperthreading_cores = true

If your server has hyperthreading on the cores then you need to set has_hyperthreading_cores = true in the appsettings.json file or environment variables. Otherwise SigParser will oversubscribe cores which will make performance worse.


If you have any questions, send us an email at support@sigparser.com. You can also book a demo session HERE.

Did this answer your question?