APM Server performance depends on a number of factors: memory and CPU available, network latency, transaction sizes, workload patterns, agent and server settings, versions, and protocol.
Let’s look at a simple example that makes the following assumptions:
- The load is generated in the same region as where APM Server and Elasticsearch are deployed.
- We’re using the default settings in cloud.
- A small number of agents are reporting.
|Transaction/Instance||512Mb Instance||2Gb Instance||8Gb Instance|
5 spans with 5 frames each
15 spans with 15 frames each
30 spans with 30 frames each
In other words, a 512 Mb instance can process ~3 Mbs per second, while an 8 Gb instance can process ~20 Mbs per second.
APM Server is CPU bound, so it scales better from 2 Gb to 8 Gb than it does from 512 Mb to 2 Gb. This is because larger instance types in Elastic Cloud come with much more computing power.
Don’t forget that the APM Server is stateless. Several instances running do not need to know about each other. This means that with a properly sized Elasticsearch instance, APM Server scales out linearly.
RUM deserves special consideration. The RUM agent runs in browsers, and there can be many thousands reporting to an APM Server with very variable network latency.