A GitHub Action to characterize the performance of a service or microservice using a load generator and statistical analysis. Use Meshery's performance analysis GitHub Action to establish a performance benchmark and visually compare percentiles (e.g. P99) over time. Integrate performance characterization within your CI/CD pipeline and catch regressions before they happen.
This action supports performance analysis of any accessible HTTP/S endpoint. If the system under test is running on Kubernetes, Meshery will collect additional infrastructure (cluster/node) statistics and include in the analysis.
See action.yml
You can use this action by defining your test configuration in a performance profile in Meshery or write your test configurations in SMP compatible format (see example).
You can then pass in either of these to the action to run a performance test.
The results of the tests are updated on the Performance Management dashboard in Meshery.
See Performance Management with Meshery for detailed instructions on setting up Meshery and authenticating the GitHub Action.
# Test configuration file for running performance analysis
# See: https://docs.meshery.io/guides/performance-management
test:
# The name of the test
name: Load Test
labels: {}
# Test configuration to be defined here
clients:
- internal: false
load_generator: fortio
protocol: 1
connections: 2
rps: 10
headers: {}
cookies: {}
body: ''
content_type: ''
endpoint_urls:
- 'https://getnighthawk.dev'
duration: 60s
# If testing while using a service mesh, see Service Mesh Performance Spec format
# See: https://github.com/service-mesh-performance/service-mesh-performance/blob/master/protos/service_mesh.proto
mesh:
type: 3 # optional
See scheduled-benchmarks.yml and configurable-benchmark-test.yml for more sample configurations.
name: Meshery Performance Analysis 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/[email protected]
with:
minikube version: 'v1.30.1'
kubernetes version: 'v1.27.3'
driver: docker
- name: Run Performance Test
uses: layer5io/meshery-smp-action@master
with:
provider_token: ${{ secrets.PROVIDER_TOKEN }}
platform: docker
profile_name: soak-test
Meshery is the canonical implementation of the Service Mesh Performance specification.
Our projects are community-built and welcome collaboration. 👍 Be sure to see the Layer5 Community Welcome Guide for a tour of resources available to you and jump into our Slack!
MeshMates are experienced Layer5 community members, who will help you learn your way around, discover live projects and expand your community network. Become a Meshtee today!
Find out more on the Layer5 community.
✔️ Join any or all of the weekly meetings on community calendar.
✔️ Watch community meeting recordings.
✔️ Access the Community Drive by completing a community Member Form.
✔️ Discuss in the Community Forum.
Not sure where to start? Grab an open issue with the help-wanted label.