Bombardier เป็นเครื่องมือเปรียบเทียบ HTTP(S) เขียนด้วยภาษาการเขียนโปรแกรม Go และใช้ fasthttp ที่ยอดเยี่ยมแทนไลบรารี http เริ่มต้นของ Go เนื่องจากประสิทธิภาพที่รวดเร็วปานสายฟ้า
ด้วย bombardier v1.1
และสูงกว่า ตอนนี้คุณสามารถใช้ไคลเอนต์ net/http
ได้แล้ว หากคุณต้องการทดสอบบริการ HTTP/2.x หรือต้องการใช้ไคลเอนต์ HTTP ที่รองรับ RFC มากขึ้น
ทดสอบกับ go1.18 และสูงกว่า
คุณสามารถคว้าไบนารีได้ในส่วนการเผยแพร่ อีกวิธีหนึ่ง เพื่อรับการดำเนินการล่าสุดและยิ่งใหญ่ที่สุด:
ไป 1.18+: go install github.com/codesenberg/bombardier@latest
bombardier [<flags>] <url>
หากต้องการข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับแฟล็ก โปรดปรึกษา GoDoc
AFAIK เป็นไปไม่ได้ที่จะส่งส่วนหัวของโฮสต์อย่างถูกต้องด้วย fasthttp
คุณสามารถใช้ net/http
( --http1
/ --http2
แฟล็ก) เพื่อแก้ไขปัญหานี้
ตัวอย่างการเรียกใช้ bombardier
กับเซิร์ฟเวอร์นี้:
> bombardier -c 125 -n 10000000 http://localhost:8080
Bombarding http://localhost:8080 with 10000000 requests using 125 connections
10000000 / 10000000 [============================================] 100.00% 37s Done!
Statistics Avg Stdev Max
Reqs/sec 264560.00 10733.06 268434
Latency 471.00us 522.34us 51.00ms
HTTP codes:
1xx - 0, 2xx - 10000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 292.92MB/s
หรือเทียบกับเซิร์ฟเวอร์โลกแห่งความจริง (พร้อมการกระจายเวลาแฝง):
> bombardier -c 200 -d 10s -l http://ya.ru
Bombarding http://ya.ru for 10s using 200 connections
[=========================================================================] 10s Done!
Statistics Avg Stdev Max
Reqs/sec 6607.00 524.56 7109
Latency 29.86ms 5.36ms 305.02ms
Latency Distribution
50% 28.00ms
75% 32.00ms
90% 34.00ms
99% 48.00ms
HTTP codes:
1xx - 0, 2xx - 0, 3xx - 66561, 4xx - 0, 5xx - 0
others - 5
Errors:
dialing to the given TCP address timed out - 5
Throughput: 3.06MB/s