# ESRally Benchmarks - More nodes = Less throughput?

**URL:** https://discuss.elastic.co/t/esrally-benchmarks-more-nodes-less-throughput/154840
**Category:** Elasticsearch
**Created:** [October 31, 2018, 12:29pm UTC](https://discuss.elastic.co/t/esrally-benchmarks-more-nodes-less-throughput/154840 "2018-10-31T12:29:51Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![GGFPC](https://avatars.discourse-cdn.com/v4/letter/g/ccd318/32.png) [@GGFPC](https://discuss.elastic.co/u/GGFPC)
#### Post date: [October 31, 2018, 12:29pm UTC](https://discuss.elastic.co/t/esrally-benchmarks-more-nodes-less-throughput/154840/1 "2018-10-31T12:29:52Z")

</div>

Hi everyone,

I have a class project where I'm trying to analyze ElasticSearch's scalability on Docker Swarm. To do that, I'm trying to use Rally to benchmark an ES cluster, and ideally I would like to see the throughput go up as the nodes increase. The problem is that a 1 node cluster achieves more throughput than 4 nodes.

Keep in mind that this is all running on a single machine.

My benchmark is Percolator with a small change:

```
{ 
      "operation": "percolator_with_content_president_bush",
      "clients": 5,
      "warmup-iterations": 100,
      "iterations": 1000,
      "target-throughput": 10000
    }

```

I changed the clients to 5 in this query and the target-throughput 10000 hoping it would be more than a single node could cope with.

The results for 1 node were:

```
   All | Min Throughput | percolator_with_content_president_bush | 166.65 | ops/s |
| All | Median Throughput | percolator_with_content_president_bush | 245.29 | ops/s |  
| All | Max Throughput | percolator_with_content_president_bush | 278.72 | ops/s |

```

While 4 nodes only managed this:

```
  All | Min Throughput | percolator_with_content_president_bush | 86.34 | ops/s |
| All | Median Throughput | percolator_with_content_president_bush | 161.64 | ops/s |

```

| All | Max Throughput | percolator\_with\_content\_president\_bush | 195.55 | ops/s |

My PC has 32GB of RAM and 8 CPUs so it should be able to handle it.

Any thoughts?

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [October 31, 2018, 12:37pm UTC](https://discuss.elastic.co/t/esrally-benchmarks-more-nodes-less-throughput/154840/2 "2018-10-31T12:37:02Z")

</div>

If a single node can saturate the resources of the machine, then adding additional nodes will not give any additional throughput as the total amount of resources is still the same. You are probably likely to instead see a decrease as there is more overhead and communication required between the nodes.

The whole point of scaling out is to add more resources to the cluster, which you do not do.

---

<div class="post-metadata">

### Author: ![GGFPC](https://avatars.discourse-cdn.com/v4/letter/g/ccd318/32.png) [@GGFPC](https://discuss.elastic.co/u/GGFPC)
#### Post date: [October 31, 2018, 1:59pm UTC](https://discuss.elastic.co/t/esrally-benchmarks-more-nodes-less-throughput/154840/3 "2018-10-31T13:59:13Z")

</div>

Thanks for the reply Christian.

So for the sake of the project, is there a way I can "fake" this by limiting the resources a single ES instance can access?

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [October 31, 2018, 2:00pm UTC](https://discuss.elastic.co/t/esrally-benchmarks-more-nodes-less-throughput/154840/4 "2018-10-31T14:00:29Z")

</div>

Yes, that might be an option.

---

<div class="post-metadata">

### Author: ![GGFPC](https://avatars.discourse-cdn.com/v4/letter/g/ccd318/32.png) [@GGFPC](https://discuss.elastic.co/u/GGFPC)
#### Post date: [October 31, 2018, 8:18pm UTC](https://discuss.elastic.co/t/esrally-benchmarks-more-nodes-less-throughput/154840/5 "2018-10-31T20:18:23Z")

</div>

Do you have any recommendation on how to do that? Can I do it on ES or should I do it on Docker? Also what usually causes a greater impact, memory or cpu?

---

<div class="post-metadata">

### Author: ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)
#### Post date: [October 31, 2018, 8:23pm UTC](https://discuss.elastic.co/t/esrally-benchmarks-more-nodes-less-throughput/154840/6 "2018-10-31T20:23:18Z")

</div>

You need to do that in Docker. Give each node a share of RAM and CPU.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [November 28, 2018, 8:23pm UTC](https://discuss.elastic.co/t/esrally-benchmarks-more-nodes-less-throughput/154840/7 "2018-11-28T20:23:22Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
