Siege的优缺点

Siege是由多线程实现的同步压测工具,它实现的是模拟n个用户不停地访问某个URL的场景。由于多线程开销会比多进程小一些,因此该压测工具比多进程的压测工具在系统开销上会好很多。程序提供了到时停止(到一定时间停止压测)和到量停止(访问一定次数后停止压测)两种压测方法,支持同时压测多个URL,也能够随机选取URL进行压测。支持ftp、http、https,可以发送GET、POST、HEAD等多种请求,可以设置鉴权、cookies。并且程序中特意增加了许多解决不同平台上兼容性的代码。已经是非常完善的一个工具了,并且到目前位置,Siege的版本依然在更新中。

不过,Siege对于压力控制并不够精确,只能粗略地根据并发用户数去控制一下压力大小。考虑这样一种场景,我希望每秒钟向服务器发送1000个请求,并且第0至1ms发一个,第1至2ms发一个,第2至3ms发一个,……,这样精度的控制Siege是无法达到的。当然,对于同步压测程序来说,这样的精度比较难以实现。另外,Siege的时间控制并不精确,比如在本文中使用Siege的章节可以看到,我想要测试5s,但是实际输出的测试时间为4.89s。Siege的计时方式是通过times函数取得压测经历的的系统时钟数,并通过 sysconf(_SC_CLK_TCK) 取得系统每秒时钟数,两者相除得来。另外一个小的缺点是,由于使用多线程实现,一个进程可以开启的线程数量本身是有限的,并且线程过多的情况下CPU在线程间切换也是一笔不小的开销,十分影响效率。因此Siege的使用过程中还要注意开启的并发用户数不能太多。

最后的最后还要展示一下Siege的源代码文件,13000行代码是由以上这一大坨源文件构成,乍一看上去还小吃了一惊,一个小工具写了如此复杂的代码。其实从文件名可以看出来每个文件都有很强的封装思想,如果利用C++来写,一定会比目前的纯C清晰很多。不过作为一款linux系统上运行的工具,可能作者认为纯C语言一定是linux编程的首选吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值