Doron Levi
Doron Levi

Reputation: 468

How can we optimise performance of a single-node Cassandra cluster for short-lived testing?

We are running our end-to-end tests using a single Cassandra node running on k8s, this node gets quite a lot reads and writes, note that this node is deleted once tests have finished, so there is no need to consider long term maintenance of data etc. what optimisations would you recommend to configure in this use case to reduce overhead? Disabling auto compaction had came in my mind... anything else?

Upvotes: 1

Views: 133

Answers (1)

Aaron
Aaron

Reputation: 57748

So there are always a few things that I do when building up a single node for development or testing. My goals are more about creating something which matches the conditions in production, as opposed to reducing overhead. Here's my list:

  • Rename the cluster to something other than "Test Cluster."
  • Set the snitch to GossipingPropertyFileSnitch.
  • Enable both the PasswordAuthenticator and the CassandraAuthorizer.
  • If you use client or node to node SSL, you'll want to enable that, too.
  • Provide non-default values for the dc and rack names in the cassandra-rackdc.properties file.
  • Create all keyspaces using NetworkTopologyStrategy and the dc name from the previous step.

Again, I wouldn't build an unsecured node with SimpleStrategy keyspaces in production. So I don't test that way, either.

With building a new single node cluster each time, I can't imagine much overhead getting in your way. I don't think that you can fully disable compaction, but you can reduce the compaction throughput (YAML) down to the point where it will consume almost no resources:

compaction_throughput: 1MiB/s

It might be easiest to set that in the YAML, but you can also do this from the command line:

nodetool setcompactionthroughput 1

I'd also have a look at the GC settings, and try to match what you have in production as well. But for the least amount of overhead with the least config, I'd go with G1GC.

Upvotes: 1

Related Questions