{"id":20180842,"url":"https://github.com/frain-dev/convoy-bench","last_synced_at":"2026-01-20T15:02:11.345Z","repository":{"id":203493473,"uuid":"679850112","full_name":"frain-dev/convoy-bench","owner":"frain-dev","description":"Benchmarking Convoy","archived":false,"fork":false,"pushed_at":"2024-09-23T13:14:44.000Z","size":20784,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-05T22:23:09.162Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/frain-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-08-17T18:58:20.000Z","updated_at":"2024-09-23T13:14:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"32a28d95-4034-49c7-9636-a61bc67b749d","html_url":"https://github.com/frain-dev/convoy-bench","commit_stats":null,"previous_names":["frain-dev/convoy-bench"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/frain-dev/convoy-bench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-bench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-bench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-bench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-bench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frain-dev","download_url":"https://codeload.github.com/frain-dev/convoy-bench/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frain-dev%2Fconvoy-bench/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28605940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T14:45:23.139Z","status":"ssl_error","status_checked_at":"2026-01-20T14:44:16.929Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T02:33:07.875Z","updated_at":"2026-01-20T15:02:11.327Z","avatar_url":"https://github.com/frain-dev.png","language":"Go","readme":"# convoy-bench\nConvoy-bench contains all the code and scripts to benchmark any [convoy](https://github.com/frain-dev/convoy) cluster.\nThe goal is to be able to quickly benchmark any Convoy cluster to know it's capacity.\nThis was heavily inspired by [Clickbench](https://github.com/ClickHouse/ClickBench/) and [Lavinmqperf](https://lavinmq.com/documentation/lavinmqperf)\n\n## Why?\nSimilar to API Gateways, Webhook Gateways have become a critical component of modern web services.\nTeams are processing millions and billions of webhooks monthly.\nWe created this benchmarking suite to easily enable our users to perform capacity planning to determine\nwhat cluster size they need for their workloads.\n\n## Tools\n1. k6.io\n2. Go\n\n## Pre-requisites\n1. Make sure you have a Convoy instance running and properly configured.\n2. If you're going to be testing with a Message Broker, make sure you've provisioned the broker ahead as well. For each broker, there are specific parameters to set, read the flags to know what to supply.\n\n## Usage\n```bash\nUsage:\n  ./bench.sh -e, --endpoint-id=ENDPOINT-ID\n\nOptions:\n  -p,   [--producer=PRODUCER]              # Select a producer to publish events from the following - http, sqs, pubsub or kafka.\n                                           # Default: http\n  -u,   [--uri=URI]                        # URI of your Convoy Cluster.\n                                           # Default: http://localhost:5005\n  -v,   [--vus=VUS]                        # Set how many virtual users should execute the test concurrently.\n                                           # Default: 10\n  -d,   [--duration=DURATION]              # Set how long the test should run. Use Golang string syntax: 1m, 5s, 10m5s .\n                                           # Default: 1m\n  -e,   --endpoint-id=ENDPOINT-ID          # ID of the endpoint configured on Convoy.\n  -a,   [--api-key=API-KEY]                # Convoy Cluster API Key. Specify this if producer is http.\n  -pid, [--project-id=PROJECT-ID]          # Convoy Cluster project ID. Specify this if producer is http.\n  -q,   [--queue-url=QUEUE-URL]            # Amazon SQS URL. Specify this if producer is sqs.\n  -aak, [--aws-access-key=AWS-ACCESS-KEY]  # AWS Access Key. Specify this if producer is sqs.\n  -ask, [--aws-secret-key=AWS-SECRET-KEY]  # AWS Secret Key. Specify this if producer is sqs.\n\nexecute convoy benchmarks\n```\n\n### Examples\n\n#### HTTP/Incoming \nThe example below will run for 10 concurrent users for 1 minute, blasting events through Convoy's REST API.\n```bash\n./bench.sh -p http -u \"{your-incoming-project-ingest-url}\" -t incoming -v 10 -d 1m\n```\n\n#### HTTP/Outgoing Project \nThe example below will run for 80 concurrent users for 1 minute, blasting events through Convoy's REST API.\n```bash\n./bench.sh -p http -u \"{your-convoy-instance-url}\" -t outgoing -v 80 -d 1m --endpoint-id \"{your-endpoint-id}\" --project-id \"{your-project-id}\" --api-key \"{your-api-key}\"\n```\n\nThe example below will run for 5 concurrent users for 5 minutes blasting events through an Amazon SQS Queue.\n```bash\n» ./bench.sh -p sqs -v 5 -d 5m \\\n--endpoint-id \"{endpoint-id}\" \\\n--queue-url \"{queue-url}\" \\\n--aws-access-key \"{aws-access-key}\" \\\n--aws-secret-key \"{aws-secret-key}\"\n```\n\n## Support\nIf you need any support, please don't hesitate to reach out to us at support@getconvoy.io or join our slack community [here](https://join.slack.com/t/convoy-community/shared_invite/zt-xiuuoj0m-yPp~ylfYMCV9s038QL0IUQ)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrain-dev%2Fconvoy-bench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrain-dev%2Fconvoy-bench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrain-dev%2Fconvoy-bench/lists"}