Golang实现的高性能HTTP负载工具
jopen
11年前
Sniper
Sniper是一个功能强大、高性能的HTTP负载工具,采用Golang编写。利用协程并发优势,实现海量并发、超低内存占用、丰富图表展示。是测试、分析、优化服务端性能的绝佳助手!
体验
提供以下可执行文件,可直接运行
功能
以实用为原则,实现以下功能
- GET / POST
- keep-alive模式
- https
- 图表展示结果
- 测试多个目标
- 支持大文件负载
- 跨平台,支持Linux,FreeBSD,Darwin
对比同类工具
性能
- 内存占用低于Apache Benchmark(ab)等主流负载工具
- 执行速度接近ab,高并发时超过ab
- 支持10k以上并发
- 支持超大文件测试
测试的详细情况,与各大负载测试工具的性能对比在此
图表展示
- 统计分析每个请求
- 输出建立连接时间
- 输出服务端响应时间
- 输出总时间
基于dygraphs与html5,详细展现服务端性能情况
从测试结果中等距采样约1000样本,详细展现连接建立,链路传输和服务端执行情况
下图展示了总时间和连接建立时间的对比,Golang是怎样得到连接建立的时间呢?
原来项目基于net库实现了HTTP协议栈,重构而不是官方net/http库才拿到详细的信息,
提升了性能。
使用说明
1. 安装Golang
请参考astaxie的开源Golang书籍《Go Web 编程》一书,Go安装一节。
2. 安装Sniper
1 | $ go get github.com/lubia/sniper |
2 | $ go install github.com/lubia/sniper |
3 | $ cp src/github.com/lubia/sniper/.sniperc ~ |
3.使用手册
请参见项目主页:Sniper
关于
作者:Lubia Yang,程序员
博客:程式設計
Licence:Apache License, Version 2.0.