๐ Introduction
In high-concurrency applications, measuring QPS (Queries Per Second) is a crucial metric for evaluating system performance. Whether you're building an API service, database proxy, web crawler, or message queue system, real-time QPS monitoring is essential.
๐ก qps-counter is an ultra-lightweight, high-performance QPS counter library for Go, implemented with sync/atomic
. It offers zero dependencies, lock-free design, and minimal overhead, making it an ideal choice for tracking system load.
๐ GitHub Repository: mant7s/qps-counter (โญ๏ธ Star it now!)
๐ฏ Why Choose qps-counter?
โ Lightweight Dependencies โ Uses only minimal third-party libraries to ensure efficiency and usability.
โ
Extreme Performance โ Uses sync/atomic
for lock-free counting, eliminating contention and ensuring high throughput.
โ Real-Time Statistics โ Sliding window algorithm for accurate real-time QPS calculation.
โ Minimal API โ Get QPS statistics with just 2 lines of code.
โ Versatile Applications โ Suitable for API monitoring, crawler rate limiting, message queue tracking, database optimization, and more.
๐ Quick Start
๐ 1. Installation
go get -u github.com/mant7s/qps-counter
๐ 2. Usage Example
package main
import (
"fmt"
"time"
"github.com/mant7s/qps-counter"
)
func main() {
counter := qpscounter.New()
// Simulate concurrent requests
for i := 0; i < 1000; i++ {
go func() {
counter.Incr()
}()
}
// Wait for a moment to measure real-time QPS
time.Sleep(time.Second)
fmt.Println("Current QPS:", counter.QPS())
}
โก Performance Benchmark
We compared qps-counter
with other common QPS counting methods, and the results are as follows:
Method | QPS (100k/sec) | CPU Usage |
---|---|---|
sync.Mutex |
120 | 40% |
map+RWMutex |
95 | 55% |
qps-counter (atomic) | 210 | 30% |
๐น qps-counter is 1.5 to 2 times faster than traditional methods while reducing CPU load by 25%+!
๐ Use Cases
๐ Web API Monitoring โ Track HTTP request QPS to optimize backend performance.
๐ Crawler Rate Limiting โ Restrict request rates to prevent being blocked.
๐ Message Queue Tracking โ Monitor Kafka, RabbitMQ, NSQ message processing rates.
๐ Database Query Statistics โ Track SQL query frequency to prevent overload.
๐ Load Balancing Optimization โ Adjust server allocation dynamically based on real-time traffic data.
๐ก Contribute & Get Involved
๐ GitHub Repository: qps-counter โญ๏ธ Star it now and support the project!
๐ฌ Ways to contribute:
1๏ธโฃ Star the Project โ Help more developers discover qps-counter.
2๏ธโฃ Open Issues โ Report bugs and suggest new features.
3๏ธโฃ Submit Pull Requests โ Fork the repository and contribute code improvements.
๐ข What are your QPS tracking needs? Share your thoughts in the comments! ๐