阅读更多

 

这是我实现的一款性能测试工具,之前在工作中常用LoadRunner之类的工具来完成性能测试,但受限于LR极其昂贵的Lisence以及难以定制的SDK,于是我用C/C++实现了这个工具,并借助Linux系统对线程和进程的良好调度,可以实现极高的并发压力.

 

官方主页或者github项目主页:http://cuiz.me/cbenchmark/2011/07/cbenchmarkjieshao/

下载地址: https://github.com/charlescui/CBenchmark  

介绍:

CBenchmark—-CharlesCui’s Benchmark

本产品是为了解决性能测试压力生成的问题.

系统|Platform

在对服务端系统进行性能测试时,目前成熟的解决方案是使用windows系统下LoadRunner等系列产品,而无法找到功能强大的Linux系统下的产品。
本程序目前支持Linux系统,并且理论可以实现跨平台编译(作者并没有实验过,但本产品并没有依赖特定系统的库或者函数).

特点|Feature

  • 本程序和当前性能测试解决方案相比,
    1. 可以实现极高的定制化:开放所有API,用户可以基于这些API实现自己的性能测试工具.
    2. 无限制:本产品完全免费,不会像现有成熟解决方案一样基于并发数,或者基于使用协议的Lisense限制。
    3. 高性能高并发:可提供比现有产品高出很多的并发能力,本程序使用C语言实现所有的代码。
    4. 通用性:由于本产品测试用例的业务实现是由客户完成,所以本产品的作用不限于某种测试协议,所以本产品是一个通用的性能测试工具.
    5. 执行过程可控:测试执行过程中用户可以通过Ctrl+C来控制本产品的执行。
    6. 特有的测试用例加载模式:对测试用例加载的模式和市面上的性能测试产品都不一样,用户可以将CBenchmark当做第三方库编码进入测试代码,也可以将CBenchmark当做工具,在执行的时候动态加载测试代码以产生压力.

本产品理论支持所有的服务端性能测试。
对于非标准协议的性能测试,我推荐您使用本产品。

安装过程

./configure --prefix=/opt/cbenchmark

make

make install  

 

 


安装后产生文件

  • 本程序内容如下:
    1. bin/cbenchmark
    2. include/*.h

TODO

报表

  • 目前本产品提供的测试结果有两种:
    1. 执行完毕后的文字提示
    2. 执行完毕后的日志
      作者在未来会提供报表生成工具,
      但不会集成在本产品中,这是为了保证本产品的干净,高效。
      并且在没有桌面的linux端使用本产品执行性能测试,
      测试结果的显示手段有限,所以我不建议集成在本工具里。
      而是最好用其他工具实现,这样也可以完成分布式性能测试的图表结果展现。

使用方法|Usage

请执行

bin/cbenchmark -?

[zheng.cuizh@localhost cbenchmark]$ /usr/local/cbenchmark/bin/cbenchmark -?

   CharlesCui's Benchmark

      help you do performance test nice.

 -o ["Shell command"]

 -f [Output result path]

 -F [Dynamic lib path.]

 -n [Each thread iterations times]

 -c [Concurrence NUM]

 -l [Syslog level]

 -g [Syslog name,less than 128 char]

 -v [Show -o stdoutput]

 -t [Selftest]

 -x [Scenario id]

 -T [Timmer(seconds)].

 -s [Select a scenario from list]  

 

 


用例|Example

./features目录下面是测试插件,目前还没有完善,现在只实现了ice的测试demo.因为我一直用cbenchmark测试私有协议以及一部分ice协议,私有协议的测试demo不方便公开,而ice协议的测试demo完全可以给大家借鉴.

ICE测试

如果大家不了解ice,可以在这里学习一下:http://www.zeroc.com/
demo位于./features/ice下,几乎所有的ice协议测试都可以用这个框架改一改就行.

  • ice测试用例的组成
    1. main.c 该文件为ice测试用例库的入口程序,根据cbenchmark加载测试用例库的约定,该文件实现了一个initialize函数,该函数可以调度测试的执行,比如提供选择要执行的测试场景等功能,可由用户定制.
    2. main.h 该文件包含了cbenchmark的头文件,以及若干工具文件,同时声明了main.c中的函数定义.
    3. mos_perf_test.cpp 该文件包含了mos模块ice接口的测试代码,通过将mos_init函数中实现的ice实例:mos传递给pVuser→verb指针,从而可以让真正实现压力请求的函数:mos_getUserStatus,mos_getUserCount得到该对象的引用,以访问checkcast后得到的MOSInterfacePrx对象.注意new的使用.
    4. mos_perf_test.h 该文件包含了mos_perf_test.cpp实现的ice连接建立/释放函数(mos_init(),mos_end()),以及测试方法(mos_getUserStatus,mos_getUserCount).

关于main.c

pmw->script.init = mos_init; pmw->script.act = mos_getUserCount; pmw->script.end = mos_end;  

 

 



这是测试mos_getUserCount函数的场景.

  • 基本的测试思路是:
    1. mos_init函数实现初始化,比如ice协议就是建立连接,并将代理类放到堆中并将指针传递给pVuser→verb或者它指向的某个结构,
    2. mos_getUserCount函数实现迭代的测试,也就是在测试过程中,CBenchmark会不断执行该函数已产生业务上的请求,
    3. mos_end函数实现释放链接操作.

不管怎样的协议的性能测试,思路如出一辙,你只需按照上面的三条完成业务代码的编写,CBenchmark就会帮助你把这个业务逻辑变成高并发高频率的请求,这样会瞬间给服务端带来极大的压力,从而测试服务器的抗压性.TODO

这个用例是我在测试工作中积累的数十个测试场景里挑选出来的,已经非常的简单了,但要了解cbenchmark的工作原理,还是需要再阅读更多的关于cbenchmark的文档,我会陆续放出.  

作者|Author

gtalk/gmailzheng.cuizh@gmail.com

 

 

 

2
1
评论 共 2 条 请登录后发表评论
2 楼 phoenixup 2011-07-13 09:54
lc7cl 写道
mark   

too
1 楼 lc7cl 2011-07-13 09:40
mark   

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Ubuntu 意外死机 (Linux Crash/Hang)解决

    Ubuntu 意外死机 (Linux Crash/Hang)解决以Intel Bay Trail/J1900/N2940 为例,通常是由于linux kernel和硬件兼容性问题导致:查询网址:https://bugzilla.kernel.org/点开对应问题,就可以看到问题,和一些解决...

  • 基于Ubuntu22.04部署bcache模式ceph

    通过使用 Ceph 管理器 crash 模块,您可以收集有关守护进程 crashdumps 的信息,并将其存储在 Ceph Storage 集群中,以便进一步分析。崩溃目录按时间、日期和随机生成的 UUID 命名,包含元数据文件 meta 和最新的...

  • Ubuntu 12.04 the system is running in low-graphics mode

    Ubuntu Community Ask! Developer Design Hardware Shop More › Stack Exchange sign up log in  Ask Ubuntu Questions Tags Tour Users

  • Analyzing Linux kernel crash dumps with crash - The one tutorial that has it all

    http://www.dedoimedo.com/computers/crash-analyze.html ...Finally, the big moment has come. Reading the information displayed by the crash utility, understanding what those curious lines mean

  • Setup usable ubuntu server from scratch

    SSH mount samba Systemd SSL Certificate nginx Location config Script shellinabox SNI proxy ...Backup and Restore Ubuntu Desktop crash restoreSSH Install SSH server apt-get ins

  • Ubuntu 14.04.05上安装xenomai 2.6.4实时核

    这是一篇关于在Ubuntu上安装配置xenomai实时核的文章,参考了三篇作品,经过实际操作是有效的,主要为自己留个备份,如果可以,也希望能为有需要的人提供一点帮助。

  • ubuntu18.04搭建基于国密算法的nginx环境

    ubuntu18.04搭建基于国密算法的nginx环境 ubuntu18.04安装 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/18.04/ 可以选择安装桌面版的或者服务器版的,看个人需求 安装基本依赖 #进入root用户 sudo -i #...

  • ubuntu 卸载vlc_否,您不需要卸载VLC

    ubuntu 卸载vlc“The sky is falling; uninstall VLC right now!” That’s the advice some websites are providing. But the purported VLC flaw is overblown—and, according to VLC’s developers, may not ...

  • Linux kernel crash dumps with crash

    Software & security Computer games Life topics Hillbilly physics Greatest sites 3D art Model ...Analyzing Linux kernel crash dumps with crash - The one tutorial that h

  • System Reliability - One Crash per Thousand Server Years

    Servers crash, except when they don’t. Our servers don’t crash, at least not often. Our current rate is about one crash per thousand server years. That means for every thousand servers we run, we ...

  • ubuntu下自我签名数字证书

    # At this point in time, you must list all acceptable 'object' # types. [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional ...

  • 在Ubuntu上下载、编译和安装Android最新源代码

    The Android build is routinely tested in house on recent versions of Ubuntu LTS (10.04), but most distributions should have the required build tools available. Reports of successes or failures on ...

  • 如何在Ubuntu 18.04上安装和使用Radamsa来模糊测试程序和网络服务

    The author selected the Electronic Frontier Foundation Inc to receive a donation as part of the Write for DOnations program. 作者选择了电子前沿基金会公司作为Write for DOnations计划的一部分接受捐赠。...

  • Ubuntu 20.04 配置fabric 2.4 密码学文件并实现多机部署

    Ubuntu 20.04 配置fabric 2.4 密码学文件并实现多机部署

  • Windows-multipass

    This will temporarily disrupt connectivity on that interface. Do you want to continue (yes/no)? 但是,Multipass需要NetworkManager来实现这一点。在没有安装NetworkManager的安装上(例如Ubuntu Server),...

  • Ubuntu 14.04 安装配置备忘录

    完全在 Linux 下工作,大概有3年时间了。 之前都是用 Windows, 而把 Linux 装在虚拟机里,现在反过来,...以下记录我的 Ubuntu 14.04 Linux 安装配置, 算是备忘录。 需要说明的一点是: 我从来不觉得使用 Debian,...

  • FAST-LIO2.0代码解析(四)laserMapping.cpp

    Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the ...

  • Vulkan in 30 minutes

    This isn't intended to be comprehensive (for that you should read the spec or a more in-depth tutorial), nor is it heavy in background or justification. Hopefully by the end of this you should be able...

  • 160套-2G-Web网站项目-HTML5源码合集-涵盖多行业网站(商业&科技&培训&商城&课设&毕设&网页简历等模板).7z

    HTML网站模板凭借其高度的灵活性和易用性,成为前端开发者的得力助手。这些模板通常预先设计好了页面的布局和样式,开发者可以直接在此基础上进行内容的填充和功能的开发,大大节省了从0到1的时间成本。同时,优质的HTML模板会经过多次的兼容性测试,确保在不同浏览器和设备上都能呈现出良好的视觉效果,提升了用户体验。你是否正在为网站项目寻找灵感与起点?现在,我们为你精心准备了160套、总容量高达2G的Web网站项目HTML5源码合集!无论你是需要搭建商业、科技、培训、商城类网站,还是用于课程设计、毕业设计、网页简历等,这里都能找到心仪的模板。每一套模板都经过精心设计和优化,让你轻松打造专业、美观的网站。快来查看这份宝藏资源,让你的项目事半功倍吧!

  • aiohttp-3.7.0b0-cp37-cp37m-manylinux2014_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics