webbench源码分析

webbench作为一个简单的网站压力测试工具,小巧而简单,其源码仅仅500行左右,是一个学习linux下C编程的好例子。

原理也比较简单,就是使用fork创建子进程,通过子进程来测试http连接,把测试结果写到管道,再有父进程读取管道信息来计算测试结果。

工作流程:

  1. 主进程(main函数)使用getopt_long函数对命令行参数进行解析,构造HTTP request信息
  2. 主进程调用bench函数根据client大小fork子进程
  3. 子进程调用benchcore函数进行测试,将结果写入管道,在benchcore函数中设置信号处理函数alarm_handler,多次对timerexpired全局变量进行判断,测试超时,进入while循环对全局变量speed、failed进行自增自减
  4. 主进程从管道读取数据,打印到stdout