jamiealquiza / sangrenel Goto Github PK
View Code? Open in Web Editor NEWApache Kafka load testing "...basically a cloth bag filled with small jagged pieces of scrap iron"
License: MIT License
Apache Kafka load testing "...basically a cloth bag filled with small jagged pieces of scrap iron"
License: MIT License
Track % of time spent not actually sending messages, rather, preparing them (e.g. batch assembly)
github.com/jamiealquiza/sangrenel/vendor/github.com/Shopify/sarama/snappy.go: "code.google.com/p/snappy-go/snappy" moved to "github.com/google/snappy"
$ go get github.com/jamiealquiza/sangrenel
package github.com/jamiealquiza/sangrenel
imports code.google.com/p/snappy-go/snappy: unable to detect version control system for code.google.com/ path
Sangrenel has great input controls such as worker concurrency, message sizes and rate limits - so that Kafka cluster can be observed within a controlled environment. Would be nice if performance thresholds could be pre-defined, such as a desired 90th percentile and worst case latency treshold, and Sangrenel automatically adjusts workers & message rates to tell you what a spec'd cluster should be suitable to handle in terms of throughput. For example, "I just built a 6 node Dell R420 cluster, how much throughput can this handle while maintaining a sub 10ms latency?" - The user should enter '10ms', a run duration, fire up Sangrenel and walk away for a jam cookie while the service does the work for them.
Report request rate from the Sarama client.
Single c3.8xlarge caps out @ ~3Gb/s. output. Need to build Sangrenel clustering with centralized controls and a working distributed rate limiter.
It's time.
I mean, of course.
Will probably refine / incorporate tachymeter
From what I can tell, Sangrenel uses sync producers (right?). If so, it would be nice to be able to play around with an async producer as well to observe the batch sending from the producer side and observe how well the brokers handle different incoming batch sizes.
Hey @jamiealquiza. #59 fixes #58 but the invalid API versions appear yet again in the code.
Replace the janky graphite option.
Could you make a new release version in github?
The current latest actually has quite a few different features then master. Having it be the latest release was a little confusing when I tried sangrenel out.
Thanks!
Causes a crash.
Reduce rapid slice growth.
I currently see no way to use this tool with Kafka cluster that requires authentication. (other than SSL).
In my case we are using SASL_PLAINTEXT and SCRAM-SHA-256, which would imply providing username/password when attempting to authentication. I currently see no option to supply those.
It either needs to be implemented or it needs to be documented (if already implemented).
Sangrenel dumps periodic output to console, which is easily parsed for input elsewhere. Would be better to have things like:
As noted in my blog post, benchmarking is complicated; this tool effectively couples (beyond just a Kafka cluster) the Sarama client as a piece of the performance testing. Underlying factors such as batching, connection counts and other controls have significant effects. These effects in relation to Sangrenel need to be clarified and controls need to be exposed where needed.
Allow a template file pre-loaded with sample message to be used. Not only will it more closely resemble user-specific data, but compression performance will be more realistically represented (compressing the Sangrenel generated random data doesn't result in high ratios).
When I run sangrenel in Centos , I face bellow error;
# sangrenel
Starting 1 client workers, 5 writers per worker
Message size 300 bytes, 500 message limit per batch
API Version: automatic, Compression: none, RequiredAcks: local
2020/02/19 14:05:12 kafka: client has run out of available brokers to talk to (Is your cluster reachable?)
any thoughts?
Completely random messages have limited value. Sangrenel needs a template system that allows users to model messages that more accurately reflect real world data.
panic: strings: negative Repeat count
goroutine 1 [running]:
strings.Repeat(0x710b59, 0x1, 0x8000000000000000, 0x0, 0xc42373a000)
/usr/local/go/src/strings/strings.go:432 +0x258
github.com/jamiealquiza/tachymeter.(*Histogram).String(0xc420aa5ea0, 0x32, 0xc42270df28, 0x5)
/home/jamiealquiza/go/src/github.com/jamiealquiza/tachymeter/tachymeter.go:271 +0x2a6
main.main()
/home/jamiealquiza/go/src/github.com/jamiealquiza/sangrenel/sangrenel.go:161 +0xd72
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.