spider RPC性能测试报告

请访问https://git.oschina.net/zhjh256/io-spider获取最新更新。

测试环境部署结构

spide_performance_network

测试用例

类 别 说明
请求报文 194字节({“systemId”:”PL”,”appVersion”:”qq.qq.qq”,”companyId”:”12″,”sourceIp”:”DESKTOP-NDOHT79″,”destIp”:”DESKTOP-NDOHT79″,”spiderOpts”:{},”companyName”:”机构1″,”createDate”:”20160101″,”companyType”:1})
响应报文 178字节({“lists”:[{“nodeId”:100001,”nodeName”:”机构100001″,”companyId”:”1200″,”createDate”:”20160101″},{“nodeId”:100001,”nodeName”:”机构100001″,”companyId”:”1200″,”createDate”:”20160101″}]})。
客户端用例     @RequestMapping(value=”/1001.html”)

public @ResponseBody String t1001(Model model,HttpServletRequest request){

PlatformReq req = new PlatformReq().createDemo();

req.setCompanyId(“12”);

req.setSystemId(“PL”);

// 之所以每次HTTP请求调用5次spider请求,是因为一开始用单次跑,客户端很快就到cpu 100%,以至于spider NB一直压不到CPU 100%,故调整。

platformService.doQuery(req);

platformService.doQuery(req);

platformService.doQuery(req);

platformService.doQuery(req);

platformService.doQuery(req);

return JsonUtils.toJson(platformService.doQuery(req));

}

服务端用例 @Service

public class PlatformServiceImpl implements PlatformService {

     public PlatformQuery doQuery(PlatformReq req) {

         //System.out.println(“收到spider请求: ” + req.toString());

         PlatformQuery query = new PlatformQuery();

         return query.createDemo();

    }

}

并发数 200

测试结果

项目名称 结果
客户端运行次数 约1500万
Spider调用次数 约7500万
平均响应时间 90毫秒
客户端QPS 2199次/秒
Spider NB/NP QPS 约11000次/秒(2199*5=10995)(就NB服务器本身而言,因为用的是vmware且服务器配置低下,所以软中断所占CPU比较高)
Spider客户端负载 95%~100%
Spider NB负载 90%-95%
Spider NP负载 60%左右
失败率 <0.01%

注:在阿里云ECS 8C/8GB上测试时,TPS 大约在18000后,受制于阿里云ECS服务器单队列网卡环境软中断过高问题,导致cpu在50%之后便无法再上去,具体可参考http://www.cnblogs.com/zhjh256/p/6020609.html。

原始数据

spider_jmeter_loader

spider_jmeter_result

spider_nb_loader

spider_client_loader

spider_np_loader

原文地址:https://www.cnblogs.com/zhjh256/p/6080802.html