Performance Management with Meshery
This guide walks through running performance benchmarks using Meshery. Users can either use the Meshery UI, the CLI, mesheryctl or run performance tests in their CI/CD pipelines using the Meshery GitHub Action.
Installing Meshery
Install and login to Meshery to start running performance benchmarks. See Installation documentation for detailed steps on how to install Meshery.
Meshery dashboard
If you are looking to run performance benchmarks on a service mesh, you can use Meshery’s service mesh lifecycle management capabilities to deploy a service mesh and deploy your application on the mesh.
With Meshery’s performance benchmarking feature, you can also deploy you application off the mesh and compare the performance and determine the overhead when the app runs on the mesh.
To install a service mesh, see this guide.
Meshery also comes with a set of sample applications that you can quickly deploy to test out the capabilities of your service mesh.
Next, we navigate to the main Performance Testing dashboard. See Performance Management to learn more about performance profiles, load generators, Kubernetes cluster, and service mesh metrics.
Running Performance Benchmarks Through Meshery UI
Meshery UI provides an easy-to-use interface in which users can create performance profiles to run repeated tests with similar configuration and can also even schedule performance tests to be run at particular times through the calendar.
On the navigation menu, click on performance.
This will open the performance management dashboard as shown below.
Performance Management Dashboard
To create a performance profile, click on “Manage Profiles” and then select “+ Add Performance Profile”.
Performance Profiles
This will open up a popup window where you can fill out the test configuration for running your benchmarks.
Configuring a Performance Test
You can now save the profile and run the test. The test will continue to run in the background even if you close the popup.
Once the test is done, you would be able to see the results of the test below.
Performance Test Results
You can then go back to your performance profile and get these results anytime.
You can also compare different test results in Meshery and draw insights. For example, you can run this test with your application running on different service meshes and check which performs better.
Selecting multiple test results
Comparing multiple test results
Running Performance Benchmarks Through mesheryctl
The mesheryctl perf
subcommand provides the performance management features of Meshery in the CLI.
To run a performance test based on a performance profile, run:
mesheryctl perf apply Istio Performance Test
You can also use flags to configure your performance test. For example:
mesheryctl perf apply istio-soak-test --concurrent-requests 1 --duration 15s --load-generator nighthawk --mesh istio --url http://localhost:2323
mesheryctl also supports test configurations written in SMP compatible format as shown below:
test:
smp_version: v0.0.1
name: Istio Performance Test
labels: {}
clients:
- internal: false
load_generator: fortio
protocol: 1
connections: 2
rps: 10
headers: {}
cookies: {}
body: ''
content_type: ''
endpoint_urls:
- 'http://localhost:2323/productpage'
duration: '30m'
mesh:
type: 3
And then you can pass this file to mesheryctl as:
mesheryctl perf apply -f perf-config.yaml
You can also override the configuration passed in the file with flags like shown below:
mesheryctl perf apply -f perf-config.yaml --url http://localhost:2323/productpage?u=test --load-generator nighthawk --qps 5
Running Performance Benchmarks in your Pipelines
Meshery also has a meshery-smp-action which is a GitHub action that can be used to run performance tests in your CI/CD pipelines.
Download the token from the Meshery Dashboard by clicking on the profile icon on the top-right corner.
Downloading the token
You can use this token to authenticate the instance of Meshery running in your CI/CD workflow.
Using the token in GitHub workflows
You can use the secrets feature in GitHub to store the token.The action can be used by defining your test configuration in a performance profile in Meshery or by writing your test configuration in SMP compatible format.
The action can then be configured as shown below:
name: Meshery SMP Action
on:
push:
branches:
'master'
jobs:
performance-test:
name: Performance Test
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
with:
ref: 'perf'
- name: Deploy k8s-minikube
uses: manusa/actions-setup-minikube@v2.4.1
with:
minikube version: 'v1.21.0'
kubernetes version: 'v1.20.7'
driver: docker
- name: Run Performance Test
uses: layer5io/meshery-smp-action@master
with:
provider_token: $
platform: docker
profile_name: soak-test
More configuration details of the action can be found here.
See sample configurations for more workflow examples using this action.