我使用Visual Studio 2015来记录负载测试使用的WebPerformance测试。在初始录音后,我可以运行20个同步用户,只有大约25%的CPU使用率。然而,我测试的网站使用Json,所以为了使测试更加真实,我为Json添加了一个自定义提取规则:
GetThreadContext(hThread, &ctx);
ctx.Dr7 = 0x00000000;
SetThreadContext(hThread, &ctx);
ContinueDebugEvent(dbgEvent.dwProcessId, dbgEvent.dwThreadId, DBG_CONTINUE);
DebugActiveProcessStop(pid);
我用它来从响应中提取几个Json属性,并使用上下文参数将它们添加到后续请求中。
在添加了几个这样的提取并将一些上下文参数传递给请求之后,我的负载测试达到了100%的CPU使用率,只有5个同时用户。
上述提取规则在WebPerformance测试中使用了大约20次,在任何单个响应中使用了0-5次。 Json响应和请求长约2k个字符。最大的提取包括大约500个字符。
我可以理解,由于更真实的Json被传递,响应时间是否上升或类似的事情。但是我不明白为什么CPU使用量猛增?请求的响应时间是否会影响负载测试的CPU使用情况?
提取+上下文参数是不是很糟糕(在CPU使用情况下)在请求中实现Json的方式?有没有更智能的方法来节省CPU使用率?
答案 0 :(得分:1)
大多数CPU使用率似乎是由在验证规则中使用上述自定义Json提取引起的。我删除了它,因为验证并不重要,一切都运行得更顺利。