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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PHP压测优化

    蛋未明
  • 十个免费的 Web 压力测试工具(转)

    蛋未明
  • Linux vim批量加注释

    背景: 最近在linux下配置邮件服务, 遇到一个问题如何批量注释多行, 我找到一个很好的解决方法,学会此方法,效率提高不只一点点啊.

    蛋未明
  • 干货 | 一文带你了解携程第四代全链路测试系统

    康猛,携程网站运营中心资深技术支持工程师,在互联网基础架构系统设计,后端开发,性能测试领域有多年实践经验。喜欢钻研新技术,转化研究成果,提升工作效率。

    携程技术
  • 【程序猿水贴】风是如何形成的 | 大气运动的原因

    最近看新闻偶然和老爸聊到最新的疫情,老爸随口说这病毒会被风刮到对面的M国去,我反驳说这是病毒又不是细菌。后来老爸又说形成风的原因是地球自转,我笑到说怎么可能,风...

    浩Coding
  • 爬虫学到什么程度可以去找工作

    随便看看知乎上的教程就可以入门了,就Python而言,会requests当然是不够的,还需要了解scrapy和pyspider这两个框架,scrapy_redi...

    小歪
  • 性能工具之nGrinder分布式简单环境搭建介绍

    高楼Zee
  • Redis hash类型

    Hash 表示的是一种字段与值之间的映射关系,与很多编程语言中的map或者字典类型类似。Redis其实本身就可以本身就可以看作一个大Hash,其字符串类型的键关...

    邹志全
  • Python基础语法介绍(3)

    py3study
  • 对话甲乙丙丁CEO阮成瑜:要做产业互联网标杆,和新零售探路者

    在互联网从消费端向产业端转移的窗口期,行业是十分缺乏像甲乙丙丁这样的真正的具备产业互联网基因,并在垂直行业扎根多年的案例的。

    罗超频道

扫码关注云+社区

领取腾讯云代金券