/rpc-performance-test

Primary LanguageJavaApache License 2.0Apache-2.0

一、在pom.xml引入测试api facade

二、获取压测工程

  1. 获取rpc-performance工程
git clone https://github.com/zonghaishang/rpc-performance.git
# 本地install依赖和打包
mvn clean install package
  1. 解压rpc-performance-xx.tar.gz
tar -xzvf rpc-performance-xx.tar.gz
# 解压后生成rpc.benchmark目录

三、开发压测接口实现类(eg: BenchmarkRandom_1k),并且继承AbstractExchangeRunnable并实现doInvoke方法

参考实现:

public class BenchmarkRandom_1k extends AbstractExchangeRunnable {

    public BenchmarkRandom_1k(InvokeOption option) {
        super(option);
    }

    @Override
    public Object doInvoke() {
        /**
         * 通过serviceFactory获取接口proxy,
         * 如果返回值不为空并且没有异常抛出,认为调用成功.
         */
        BenchmarkService benchmarkService = (BenchmarkService) serviceFactory.getReference(BenchmarkService.class);
        return benchmarkService.send_1k(randomString(1024));
    }
}

四、打包本地测试工程执行测试

  1. 打包工程
mvn clean package
  1. 复制本地测试工程jar到rpc.benchmark/ext目录

  2. 执行压测

cd rpc.benchmark
./benchmark.sh
usage: benchmark.sh [options]
 -b,--target <arg>         target benchmark runnable class
 -c,--threads <arg>        The number of concurrent
 -d,--duration <arg>       benchmark running duration(seconds)
 -h,--host <arg>           server host or address
 -p,--port <arg>           server port
 -t,--timeout <arg>        rpc request timeout(milliseconds)
 -tc,--connections <arg>   The number of tcp connection
 -w,--warm-up <arg>        warm up duration(seconds)

# 开始压测, 为了测试结果更准确,建议warm up 30秒.
# 压测工具默认会不统计最后调用10秒
./benchmark.sh -b com.demo.rpc.benchmark.BenchmarkRandom_1k -h 127.0.0.1 -p 20880 -d 300 -w 30

五、本项目依赖facade指引

目前测试用facade api包含在开源仓库:

https://github.com/sofastack-guides/sofastack-mesh-demo.git 对应的分支:benchmark

  1. 本机进入sofastack-mesh-demo根目录,执行mvn clean install一下

  2. 在测试时,可以把dubbo-echo-server注册中心禁用掉,这样本地启动server即可。

<dubbo:registry address="N/A"/>

六、完整开发实例,可以切到run_test分支