zoukankan      html  css  js  c++  java
  • 用代码模拟调用接口方式压测现网服务器的服务性能

    本文为博主原创,转载请注明出处:

      最近为统计现网生产环境的服务处理的性能,需要压测现网服务器,由于现网服务器所处的网络不在同一个局域网内,压测不了,所以想到了使用代码的方式,压测服务器的性能,使用的思路就是将模拟压测的线程数,既但线程持续请求的次数以请求参数的方式传入到指定的controller 中,然后再对应的方法中创建线程池,不断的执行任务,同时每隔指定的时间,通过打印日志的方式,观察服务处理的次数。

      提供示例思路代码如下:

      1.创建线程类,并执行指定的任务

    import java.util.concurrent.atomic.AtomicInteger;
    
    public class ThreadEntity implements Runnable{
    
        public static AtomicInteger count = new AtomicInteger(0);
        // 每个线程执行的任务数
        private int eachThreadTaskCount;
    
        public ThreadEntity(){}
    
        public ThreadEntity(int eachThreadTaskCount){
            this.eachThreadTaskCount = eachThreadTaskCount;
        }
    
        @Override
        public void run() {
            for (int i=0;i<eachThreadTaskCount;i++){
                count.incrementAndGet();
                System.out.println("执行加一" + count.get());
                // do yourself to mock test
            }
        }
    }

      

      2. 模拟批量压测:

      

    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class MockThreadTest {
    
        public static void main(String[] args) {
            test(10);
        }
    
        public static void test(int threadNum) {
            ExecutorService executorService = Executors.newFixedThreadPool(threadNum);
            for (int i = 0; i < threadNum; i++) {
                executorService.execute(new ThreadEntity(100));
            }
            long startTimestamp = System.currentTimeMillis();
            boolean isEnding = true;
            while (isEnding) {
                if (ThreadEntity.count.get() == 1000) {
                    isEnding = false;
                }
                // 统计计算的次数和时间
                System.out.println("请求次数为" + ThreadEntity.count.get());
                System.out.println("请求的总时间为" + (System.currentTimeMillis() - startTimestamp));
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            executorService.shutdown();
        }
    }
  • 相关阅读:
    System.Web.HtppRuntime.cs
    Code:Tree
    Code-Helper-Web:CacheHelper.cs
    Code-Helper-Web:CookieHelper.cs
    ORACLE数据库常用查询二
    涂抹Oracle笔记2:数据库的连接-启动-关闭
    windows下常用的操作命令及dos命令
    涂抹Oracle笔记1-创建数据库及配置监听程序
    表空间满处理方法
    SQL内连接-外连接join,left join,right join,full join
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/15652593.html
Copyright © 2011-2022 走看看