前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Siege的优缺点

Siege的优缺点

作者头像
蛋未明
发布2019-06-20 12:18:19
1.7K0
发布2019-06-20 12:18:19
举报
文章被收录于专栏:蛋未明的专栏蛋未明的专栏

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编程的首选吧。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年08月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档