Jmeter。 JSR223+Grovy 2.4.5 采样器响应时间退化

Jmeter. JSR223+Grovy 2.4.5 sampler response times degradation

(问题从 继续) 我正在通过 Protobuf 协议测试应用程序。最初我使用 HTTP 采样器,但在将二进制数据保存到字符串时遇到了问题。 解决方案是将 Beanshell 采样器与 HTTPClient 和 POST 请求一起使用,请求中包含正文中的二进制数据:

byte[] data = null;
//...assign protobuf binary buffer to data...

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://127.0.0.1");
HttpEntity entity = new ByteArrayEntity(data);
post.setEntity(entity);
post.setHeader(HttpHeaders.CONTENT_TYPE, "application/octet-stream");
HttpResponse response=null;
try {
    response = client.execute(post);
} catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

ResponseCode = response.getStatusLine().getStatusCode().toString();
//if some assert is true then
Issuccess = true;
ResponseMessage="Some Response Message";

因为我试图为数千个并发用户提供高负载,所以我开始使用 JSR223+Grovy sampler 而不是 Beanshell samler(受本文影响https://blazemeter.com/blog/beanshell-vs-jsr223-vs-java-jmeter-scripting-its-performance

在测试过程中,所有 JSR223 采样器的响应时间都有很大的增长:

然后创建了一个新的测试计划,并将所有 JSR223 替换为 Beanshell 采样器(没有重置选项)。图片还行(同比例图):

那么如何识别 JSR223 的问题或者修复它。还有一个问题,为什么每个人都建议使用 JST223 + Grovy,因为它提供了这些问题?

好的,本文推荐使用编译缓存键。我没看见过它。现在一切正常。