自己编写高负荷测试的工具

最近一个项目,客户要求进行高负荷测试;所谓高负荷测试时看系统在CPU占用或MEM占用率极高情况下的表现。

在第一轮测试时,我们通过在LINUX操作系统上,用压缩和解压缩的方法去占用CPU,这样的方法有个弊端,就是比较耗时而且不可控。

在这样的测试情况下,客户非常不满意。提出了很多的问题。

还要客户给了第二轮测试的机会,然后我就通过百度或谷歌,寻找高负荷测试的工具。结果一无所获。我后来想做为一个程序员,是否可以自己动手写一个这样的程序呢?

通过分析原理,占用CPU,就是让CPU可劲的进行运算;占用MEM,就是申请内存BUFFER。 分析出这个原理后,接下来的事情,就简单了。

我设计的占用CPU的程序具体如下:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc,char ** argv)
{
    int looptimes;
    float a,b,c;
    int i;
    a = 1000000.0;
    b = 8765.0;
    i = 1;
    looptimes = atoi(argv[1]);
    while(1)
    {
        c = a / b;
        i ++;
        if((i % looptimes) == 0)
        {
            usleep(100);
        }
    }
   //printf("argc=%d\n",argc);
   //printf("argv=%s\n",*argv++);
   //printf("argv=%s\n",*argv);
   //argc=2
   //argv=./occu
   //argv=100
   return 0;
}

我设计的占用MEM的代码具体如下:

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc,char ** argv)
{
    unsigned int initbytenum;
    void * buf;
    initbytenum = atoi(argv[1]);
    initbytenum = 1024 * 1024 * initbytenum;
    printf("initbytenum=%ld\n",initbytenum);
    buf = malloc(initbytenum);
    memset(buf,0,  initbytenum);
    int a;
    a=0;
    int t;
    t =1;
    while(a!=9)
    {
        if(t % 100 == 0)
        {
            scanf("%d",&a);
            t =1;
        }
        t++;
        buf = malloc(initbytenum);
        memset(buf,0,  initbytenum);
    }
   //printf("argc=%d\n",argc);
   //printf("argv=%s\n",*argv++);
   //printf("argv=%s\n",*argv);
   //argc=2
   //argv=./occu
   //argv=100
   return 0;
}

自己编写高负荷测试的工具

时间: 2024-10-22 22:30:14

自己编写高负荷测试的工具的相关文章

自己编写高负荷測试的工具

近期一个项目,客户要求进行高负荷測试:所谓高负荷測试时看系统在CPU占用或MEM占用率极高情况下的表现. 在第一轮測试时,我们通过在LINUX操作系统上,用压缩和解压缩的方法去占用CPU,这个方案有个弊端,就是比較耗时并且不可控. 在这种測试情况下,客户非常不惬意.提出了非常多的问题. 还要客户给了第二轮測试的机会,然后我就通过百度或谷歌,寻找高负荷測试的工具.结果一无所获.我后来想做为一个程序猿,能否够自己动手写一个这种程序呢? 通过分析原理,占用CPU,就是让CPU可劲的进行运算:占用MEM

[ 转 ]编写高质量代码:改善Java程序的151个建议

记得3年前刚到公司,同桌同事见我无事可做就借我看<编写高质量代码:改善Java程序的151个建议>这本书,当时看了几页没上心就没研究了.到上个月在公司偶然看到,于是乎又找来看看,我的天,真是非常多的干货,对于我这种静不下心的人真是帮助莫大呀. 看完整本书,也记了不少笔记,我就分享一部分个人觉得有意义的内容,也为了方便以后自己温习. --警惕自增陷阱 i++表示先赋值后自增,而++i表示先自增后赋值.下面的代码返回结果为0,因为lastAdd++有返回值,而返回值是自增前的值(在自增前变量的原始

深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点(转)

才华横溢的Stoyan Stefanov,在他写的由O’Reilly初版的新书<JavaScript Patterns>(JavaScript模式)中,我想要是为我们的读者贡献其摘要,那会是件很美妙的事情.具体一点就是编写高质量JavaScript的一些要素,例如避免全局变量,使用单变量声明,在循环中预缓存length(长度),遵循代码阅读,以及更多. 此摘要也包括一些与代码不太相关的习惯,但对整体代码的创建息息相关,包括撰写API文档.执行同行评审以及运行JSLint.这些习惯和最佳做法可以

编程精粹--编写高质量C语言代码(6):对程序进行逐条跟踪

发现程序错误最好的方法就是执行程序.在程序执行过程中,我们利用我们的眼睛,或者通过我们编写的断言和子系统一致性检查等自动测试的工具来发现错误.虽然断言和子系统检查都很有用,但是如果程序员事先没有想到应该对某些问题进行检查,那么也就无法保证程序没有问题. 程序员可以在代码中设置断点,一步步跟踪代码的运行,观察输入变为输出的过程.程序员测试其程序最好的方法就是对程序进行逐条跟踪,对中间的结果进行认真的查看.对代码进行逐条跟踪是需要时间的,但它同编码比,只是一小部分.一旦逐条地跟踪代码成为习惯后,我们

编程精粹--编写高质量C语言代码(1):假想编译程序

编译程序仅仅能查找出程序的语法错误,而对于"数组越界访问","对空指针解引用"等错误,编译程序是束手无策的.同时我们知道测试人员所使用的黑箱测试方法所能做的只是往程序里填数据,并看它弹出什么.这就决定了对程序错误的检测可能需要点运气. 假如编译程序能够检测出"数组越界访问","差一错误","空指针"等等错误,那么编写无错代码其实就要简答多了. 所以我们需要一个思维转变: 不要光依赖黑箱测试方法,还应该试着去

让Quality Center走下神坛--测试管理工具大PK(转)

让Quality Center走下神坛--测试管理工具QC/ALM 和 RQM.Jira.TP.SCTM大PK 在写完了<让QTP走下神坛>之后,现在来谈谈测试管理工具,献给所有正在或打算做测试管理工作的同行. 当然,话题离不了Quality Center——但又不只是谈QC,我会结合对比各种主流的企业级测试管理工具,包括标题提到的:HP QC/ALM.IBM RQM.51Testing TP.Micro Focus SCTM.Atlassian Jira.但是不会提及Bugzilla.Bug

tcp/udp高并发和高吐吞性能测试工具

在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间.下面介绍一个测试工具只需要简单地设置一下就能对tcp/udp服务进行高并发和高吐吞的性能测试,并通过图形化的方式反映测试结果. 工具是采用用.NET编写,所以需要.NET FRAMEWORK才能运行.虽然.net在这方面的给人的感觉性能不怎么出色,但这个工作出色性能足够满足大部分服务端的压力测试.

编写高质量JAVA程序代码的建议

--------------------------------------------------------------------------------------------------- 前言:原著<改善JAVA程序的151个建议>有151个建议,我在拜读的过程根据自己的理解合并了其中的几个,并将每个建议的核心要义进行了一次纯手工提炼,以方便想阅读这本书的同行能够更快的掌握这本书的所有核心内容. -------------------------------------------

Effective Python之编写高质量Python代码的59个有效方法

                                                     这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码的59个有效方法>,感觉还不错,具有很大的指导价值.下面将以最简单的方式记录这59条建议,并在大部分建议后面加上了说明和示例,文章篇幅大,请您提前备好瓜子和啤酒! 1. 用Pythonic方式思考 第一条:确认自己使用的Python版本 (1)有两个版本的python处于活跃状态,python2和pyt