Skip to content

Load Testing Blog

JMeter 5 and OctoPerf 9.4

JMeter 5 is out, be the first to test with it from the cloud with OctoPerf!

Integration of JMeter 5

Apache JMeter

This brand new version of JMeter brings a lot of new features and fixes. As usual we've worked hard to migrate all our load generators to JMeter 5 as fast as possible. Compatibility with previous scripts is still guaranteed since the number of core changes remains small.

Elasticsearch: Optimization Guide

You may already have setup an Elasticsearch cluster but you're struggling with numerous issues:

  • Indexing is slow: somehow you're not getting the ingestion performance you expected,
  • Out of Memory: your nodes are regularly hitting the Java Xmx mark and you don't know why,
  • all CPU cores are not used: somehow you are struggling to vertically scale the database to take advantage of multiple CPU cores,
  • and much more.

After spending several years maintaining, upgrading and tweaking Elasticsearch, we've learnt a lot of things along the way. We feel like the tips and tricks to optimize Elasticsearch provided here can be useful to others.

With tools like Kubernetes or Rancher, it's becoming much easier to exploit physical hardware without the need of an entire IT department. The optimizing guide below intends to provide a solid foundation for people willing to setup Elasticsearch at scale in production. Let's start!

Summertime update: OctoPerf 9.2

Wondering what's new in OctoPerf? You've come to the right place. Don't worry I know you have plans for summer so I will keep it short.

New Features

Private hosts

Private hosts

OctoPerf now allows using your own Amazon Web Services or Digital Ocean account. This way OctoPerf will automatically start the load generators for you in your private cloud. And of course we will start them on demand and stop them once the test is finished. OctoPerf manages the entire test lifecycle remotely. Thanks to this you only get billed for the duration of the test.

It also works with Elastic/Floating IP adresses in case you need to whitelist them in advance.

Report from Agile Testing expo

We attended the Agile Testing Expo in Danvers (Boston area, Ma) about one week ago. It was the first edition of this event in the US after several successful editions in Germany. We handpicked this event as a part of our Expo tour in the US. A convenient area for us to travel as several of our customers and prospects are located in the Boston area. In this IT business where a lot can be done remotely, we always enjoy meeting face to face with our supporters to share some good talks.

Booth

The expo was organised in the expo hall of the Hilton DoubleTree hotel. Count a 30 minutes drive North of Boston to reach the place. On the event, every exhibitor had a small corner to display its materials, no large booths, only a table and room for a couple of banners. We made the call to display our colors and openly communicate on JMeter and our basic strengths (Easy scripting, Intuitive design, Live results). A good call as we were the only company to communicate about JMeter among our competitors. A good keyword when it comes to performance testing. This is something we experienced at StarWest in October also, it drags people's interest.

Booth

Spring Boot + Hazelcast Tutorial

It all started when we had the following problem: How can you enable High Availability in a Rest API based on Spring Boot?

As you may know, we have two products: (both based on Spring Boot)

  • OctoPerf Saas-Edition: the online saas platform,
  • OctoPerf Enterprise-Edition: the full on-premise installable version.

While Saas-Edition absolutely needs High Availability, the Enterprise-Edition doesn't share the same requirements. But, as astonishing as it may seem, both versions share exactly the same code, while working slightly differently.

That's how I've come up with an elegant solution I'd like to share with you. This article aims to give an answer to multiple problems arising when clustering a web application (and especially Rest APIs):

  • Get an understanding of why clustering is inherently difficult (but not insurmountable),
  • How to hide clustering problematics behind a service that handles the difficult work for us,
  • How to enable clustering in a Spring Boot Rest API? Which framework should I use? (obviously we're talking about Hazelcast here)
  • How to make your Spring Boot App configurable to support High Availability without changing a single line of code, (using @ConditionalOnProperty)
  • How to implement a very simple Leader Election mechanism using Hazelcast and know when your instance is the leader.

The whole article is based on real-world code examples available on Github. Don't expect any long explanations on Distributed Systems theories.