Reference Documentation

Design docs, concept definitions, and references for APIs and CLIs.

How to repeat the tests

We have prepared several AWS AMIs for anyone who is interested in replication of these tests. These AMIs contain some tuned OS parameters, for example maximum amount of threads per process and open file descriptors:

If you would like to verify performance for all components hosted on a single server instance, simply run Thingsboard AMI instance. By default this instance will be using Cassandra that runs locally.

If you would like to verify performance for standalone Thingsboard server that uses external Cassandra Cluster, please init Cassandra cluster using provided Cassandra AMI first. For example let’s do the configuration for three Cassandra instances. Once you have launched 3 AWS instances using Cassandra AMI please update cassandra.yml file to make them run in a cluster. In our case we have 3 instances with the following IP addresses:

Login into every cluster instance and do the following:

sudo nano /etc/cassandra/cassandra.yaml

Find in the file next lines and update them accordingly.

For instance A:

seeds: "172.21.12.100:9042,172.21.12.101:9042,172.21.12.102:9042"

listen_address: "172.21.12.100"

rpc_address: "172.21.12.100"

For instance B:

seeds: "172.21.12.100:9042,172.21.12.101:9042,172.21.12.102:9042"

listen_address: "172.21.12.101"

rpc_address: "172.21.12.101"

For instance C:

seeds: "172.21.12.100:9042,172.21.12.101:9042,172.21.12.102:9042"

listen_address: "172.21.12.102"

rpc_address: "172.21.12.102"

On every instance restart cassandra:

sudo service cassandra stop
sudo service cassandra start

And verify that Cassandra cluster setup was successful:

nodetool status

Once Cassandra cluster setup is done please run Thingsboard AMI instance. You need to update thingsbaord.yml config to use Cassandra cluster instead of local instance:

sudo nano /etc/thingsboard/conf/thingsboard.yml

And update cassandra url from localhost to IPs of cassandra ring:

url: "${CASSANDRA_URL:172.21.12.100:9042,172.21.12.101:9042,172.21.12.102:9042}"

After configuration update restart Thingsboard service:

sudo service thingsboard stop
sudo service thingsboard start

Once you will setup your cluster configuration using Thingsboard and Cassandra AMIs you can execute tests from “client” machines (Thingsboard Performance Test AMIs) using following commands:

cd projects/performance-tests

Update mqttUrls and restUrl and set private IPs of AWS instance where Thingsboard service is deployed in test.properties file:

nano src/main/resources/test.properties

Re-install project so Gatling can pick up latest config files and start test:

mvn clean install gatling:execute