1、项目背景
服务端采取tcp/udp协议实现,携带二进制协议码流,现有的测试工具Jmeter在使用过程中遇到一些限制,譬如产生唯一性的字段时需要从csv文件读值,然后插入到tcpsampler携带的二进制码流中,反复读文件影响性能。QPS不高,达不到压测要求。另外,在性能测试过程中,不能够灵活的配合开发去定位问题。譬如某个请求失败了,需要提供一些请求相关的字段给到开发去快速定位问题。基于此,自己用java写了一个简单的tcp/udp性能测试工具。
2、总体架构
并发N个线程来达到增加QPS的目的。
每个线程的网络操作是同步的,没有采取异步socket(此时QPS和时延是强相关的,时延越小,QPS越高)
整个程序需要统计总的请求次数,服务器回包次数,服务器回包中结果为失败的次数,tcp建立连接失败次数,tcp建立连接时延,发送接收时延
3、单线程的代码实现
@Override
public void run(){
long st=System.nanoTime();
for(int i=0;i<max;i++){
// if((i+1)%2==0){
// try{
//