You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jmeter调用gRPC报错:Invalid call sequence及空指针异常求助

gRPC请求在JMeter中执行报错的排查方案

问题背景

我们正在开展gRPC协议相关工作,使用Postman执行请求时一切正常,但通过JMeter执行时遇到错误,报错日志如下:

2022-07-11 15:47:18,322 ERROR o.a.j.s.SampleResult: setEndTime must be called after setStartTime
java.lang.Throwable: Invalid call sequence
    at org.apache.jmeter.samplers.SampleResult.setEndTime(SampleResult.java:1107) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.samplers.SampleResult.sampleEnd(SampleResult.java:1145) [ApacheJMeter_core.jar:5.4.1]
    at vn.zalopay.benchmark.GRPCSampler.errorResult(GRPCSampler.java:112) [jmeter-grpc-request-v1.2.1.jar:?]
    at vn.zalopay.benchmark.GRPCSampler.sample(GRPCSampler.java:79) [jmeter-grpc-request-v1.2.1.jar:?]
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.4.1]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_321]
2022-07-11 15:47:18,322 ERROR o.a.j.t.JMeterThread: Error while processing sampler: 'GRPC Request'.
java.lang.NullPointerException: null
    at vn.zalopay.benchmark.GRPCSampler.errorResult(GRPCSampler.java:114) ~[jmeter-grpc-request-v1.2.1.jar:?]
    at vn.zalopay.benchmark.GRPCSampler.sample(GRPCSampler.java:79) ~[jmeter-grpc-request-v1.2.1.jar:?]
    at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638) ~[ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) ~[ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.4.1]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.4.1]

错误分析

  1. 调用顺序错误:setEndTime must be called after setStartTime说明JMeter的SampleResult对象在未启动计时(调用sampleStart或setStartTime)的情况下,直接调用了结束计时的方法,属于插件代码逻辑漏洞。
  2. 空指针异常:NullPointerException发生在GRPCSampler.errorResult方法第114行,说明该方法中某个对象未完成初始化就被调用,比如SampleResult实例未创建成功就执行了后续操作。

解决方案

  • 升级或更换gRPC插件:当前使用的jmeter-grpc-request-v1.2.1.jar(zalopay出品)存在明显逻辑bug,建议升级到该插件最新版本,或替换为社区维护更活跃的JMeter gRPC插件。
  • 核对请求配置:确保JMeter中gRPC请求的所有必填参数(服务地址、方法全限定名、请求体序列化配置、TLS证书等)与Postman配置完全一致,避免因配置缺失导致插件初始化失败。
  • 验证环境兼容性:确认JMeter 5.4.1与该gRPC插件的兼容性,同时检查Java 1.8.0_321是否满足插件运行要求;可尝试在无其他插件干扰的干净JMeter环境中测试,排除插件冲突。
  • 修复插件代码(如有能力):若无法更换插件,可查看GRPCSampler.errorResult方法代码,确保调用sampleEnd前先调用sampleStart初始化计时;同时排查第114行的对象是否为null,添加空值判断或提前完成对象初始化。

内容的提问来源于stack exchange,提问作者Pradeep Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:54:17