http://www.lubia.me/http-loader-compare这篇文章对目前主流的HTTP负载工具性能进行评测,再对比本人采用Golang编写的负载工具Sniper,分析差异与不足。
1、硬件配置
服务端:
Ubuntu 12.04 i386,虚拟机,四核cpu,1G内存
客户端:
与服务端相同,Ubuntu 12.04 i386,虚拟机,四核cpu,1G内存
2、服务端代码
采用Golang编写,收到请求即返回50k大小的数据,支持http keep-alive
代码在此,执行方式 ./httpserver 51200
3、测试方式
采用100并发,100k总请求数,对比各个工具的每秒事务数以及内存占用。测试结果如下
从每秒事务数可以看出,在HTTP短连接的情况下,http_load性能最高且内存占用最低,只不过不支持keep-alive模式,ab次之,随后是sniper,sniper采用Golang编写,看来性能不比C差多少。而在keep-alive模式下,只有siege和sniper支持,sniper的性能又更好一些。其中由于webbench不支持指定总请求数,只能指定执行时间为30s,再相除获得每秒事务数。
相关阅读
1、ab源码研究