測試環境部署結構 測試用例 public @ResponseBody String t1001(Model model,HttpServletRequest request){ PlatformReq req = new PlatformReq().createDemo(); req.setComp ...
測試環境部署結構
測試用例
類 別 | 說明 |
請求報文 | 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。
原始數據