Using the BigPetStore generator for testing kubernetes.
We decided to take guestbook and boot it on booster rockets, using the k8petstore load generator. We did this in 3 steps.
- Modify ASF BigTop to support a transaction queue. This is a java application which queues builds petstore transactions and then pumps them into either a file endpoint, or a rest endpoint.
- Modfiy GuestBook to support
- Store all transactions as a list, rather than as a key/value pair. This way we can count, isolate, and parallelize writes to redis.
- Graphical interface which visualizes how many transactions are stored. This way, by launching k8petstore, you can immediately watch and see how your cluster scales.
In the transaction-queue, we continually write new customers until a rotating queue is full. Then, we let the rotating queue is full. Once the queue is full, we return to the calling function. Actually, the calling function is an infinite loop, so the generator continues writing transactions to an endpoint as long as its alive...
Using BPS-LoadGen in kubernetes.
Results
Using the datagenerator at large scale, we were able to do some interesting things in redis.
1) Breaking containers with bad memory settings.
Because the data generator continues to generate lots of java objects in memory,if a container is running in a underprovisioned VM, we found that sometimes it would "just die".
2) Watching kubernetes plateau
As a load test, we found that overtime kubernetes could plateau for one of two reasons, either the redis-master might slow down, or else, the ability to scale up the number of generator containers would slow down. In the end, we found that a long running kubernetes application would eventually plateau when we run k8petstore for sufficiently long. This is likely do to the simple fact that the Redis master slows down once it hits a certain critical size....For the most part, handling 1000 transactions per second is not a problem in redis, as shown in the screenshot above.


No comments:
Post a Comment