8000 GitHub - panqijun2006/WebBench: Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。

Notifications You must be signed in to change notification settings

panqijun2006/WebBench

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebBench

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。

##使用:

sudo make && make install

##命令行选项:

短参 长参数 作用
-f --force 不需要等待服务器响应
-r --reload 发送重新加载请求
-t --time 运行多长时间,单位:秒"
|-p     |--proxy <server:port>  |使用代理服务器来发送请求	    |

|-c |--clients |创建多少个客户端,默认1个" | |-9 |--http09 |使用 HTTP/0.9 | |-1 |--http10 |使用 HTTP/1.0 协议 | |-2 |--http11 |使用 HTTP/1.1 协议 | | |--get |使用 GET请求方法 | | |--head |使用 HEAD请求方 | | |--options |使用 OPTIONS请求方法 | | |--trace |使用 TRACE请求方法 | |-?/-h |--help |打印帮助信息 | |-V |--version |显示版本号 |

##基本原理: 1)运行参数获取和判断,默认1个客户端和运行60秒
2)构建请求
# HEAD/GET/OPTIONS/TREACE请求判断及版本判断
# url合法性判断
# 构建HTTP请求信息
3)打印版本信息及请求信息(url,方法,版本,客户端数量及运行时间)
4)执行压力测试
# 创建socket,判断与HTTP服务器是否可通,做可用性判断
# 创建PIPE通道,用于主进程和子进程的通信
# FOR子进程,数量与-C参数所指定的客户端数量一致
# 子进程处理逻辑
O 压力测试开始,用Alarm设置闹钟,回调处理是一个timerexpired值,该闹钟的作用是到达测试时间时改变timerexpired值,以使得后面的死循环测试可以跳出
O 不断地writeHTTP请求和read HTTP响应,并记录直到timerexpired置位跳出,记录成功次数、失败次数和接收到的字节数量。
O 如果置了-f参数,则不会等待响应结果就发起下一次HTTP请求
O 一个连接只会执行一个请求,收到请求后会关闭连接。
O 压力测试时间到了之后,会将结果输出到PIPE管道上,供主进程读取
# 主进程处理逻辑
O 通过PIPE读取子进程输出结果
O 当所有子进程(客户端)的结果都读取到之后汇总输出本次测试的结果,RPS

一句话总结:创建一堆的子进程去执行HTTP请求,每个进程执行完后将结果返回主进程,主进程等所有子进程结果后汇总打印。

About

Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 77.9%
  • Roff 15.5%
  • Makefile 6.6%
0