Cli for running benchmark tests for n8n
npm install @atom8n/n8n-benchmarkTool for executing benchmarks against an n8n instance.
``text`
packages/@n8n/benchmark
├── scenarios Benchmark scenarios
├── src Source code for the n8n-benchmark cli
├── Dockerfile Dockerfile for the n8n-benchmark cli
├── scripts Orchestration scripts
The easiest way to run the existing benchmark scenarios is to use the benchmark docker image:
`sh`
docker pull ghcr.io/n8n-io/n8n-benchmark:latestPrint the help to list all available flags
docker run ghcr.io/n8n-io/n8n-benchmark:latest run --helpRun all available benchmark scenarios for 1 minute with 5 concurrent requests
docker run ghcr.io/n8n-io/n8n-benchmark:latest run \
--n8nBaseUrl=https://instance.url \
--n8nUserEmail=InstanceOwner@email.com \
--n8nUserPassword=InstanceOwnerPassword \
--vus=5 \
--duration=1m \
--scenarioFilter=single-webhook
It is also possible to create your own benchmark scenarios and load them using the --testScenariosPath flag:
`sh./scenariosAssuming your scenarios are located in
, mount them into /scenarios in the container`
docker run -v ./scenarios:/scenarios ghcr.io/n8n-io/n8n-benchmark:latest run \
--n8nBaseUrl=https://instance.url \
--n8nUserEmail=InstanceOwner@email.com \
--n8nUserPassword=InstanceOwnerPassword \
--vus=5 \
--duration=1m \
--testScenariosPath=/scenarios
The benchmark suite consists of benchmark scenarios and different n8n setups.
`sh`
pnpm benchmark-locally
You can filter to a specific scenario and setup:
`sh`Run only the http-node scenario with the sqlite setup
pnpm benchmark-locally --runDir /tmp/n8n-data --scenarioFilter http-node sqlite
`sh`
pnpm benchmark-in-cloud
cliThe n8n-benchmark cli is a node.js program that runs one or more scenarios against a single n8n instance.
Build the Docker image:
`sh`Must be run in the repository root
k6 doesn't have an arm64 build available for linux, we need to build against amd64
docker build --platform linux/amd64 -t n8n-benchmark -f packages/@n8n/benchmark/Dockerfile .
Run the image
`sh`
docker run \
-e N8N_USER_EMAIL=user@n8n.io \
-e N8N_USER_PASSWORD=password \
# For macos, n8n running outside docker
-e N8N_BASE_URL=http://host.docker.internal:5678 \
n8n-benchmark
Requirements:
- k6
- Node.js v20 or higher
`sh
pnpm build
Benchmark scenarios
A benchmark scenario defines one or multiple steps to execute and measure. It consists of:
- Manifest file which describes and configures the scenario
- Any test data that is imported before the scenario is run
- A
k6 script which executes the steps and receives API_BASE_URL environment variable in runtime../scenarios.n8n setups
A n8n setup defines a single n8n runtime configuration using Docker compose. Different n8n setups are located in
./scripts/n8nSetups`.