π 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! π
Top comments (0)