zoukankan      html  css  js  c++  java
  • 自己编写高负荷測试的工具

           近期一个项目,客户要求进行高负荷測试;所谓高负荷測试时看系统在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
    ",argc);
       //printf("argv=%s
    ",*argv++);
       //printf("argv=%s
    ",*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
    ",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
    ",argc);
       //printf("argv=%s
    ",*argv++);
       //printf("argv=%s
    ",*argv);
       //argc=2
       //argv=./occu
       //argv=100 
       return 0;
    }


     

       

  • 相关阅读:
    Java知识点梳理——集合
    Java知识点梳理——装箱和拆箱
    Shiro RememberMe 1.2.4 反序列化漏洞详细复现
    哈希长度拓展攻击之De1CTF
    Discuz! ML RCE漏洞 getshell 复现
    Redis基于主从复制的RCE 4.x/5.x 复现
    WebLogic反序列化漏洞(CVE-2019-2725补丁绕过)
    【实战2】记一次获取远程桌面历程
    远程桌面远程代码执行漏洞(CVE-2019-0708)Poc
    【实战1】记一次提至administrator权限历程
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/3997172.html
Copyright © 2011-2022 走看看