我能够在 Kubernetes 中运行 jmeter http 采样器请求脚本,但是当我尝试使用 gRPC 请求时,出现以下错误:
2025-01-08 10:33:25,530 ERROR v.z.b.GRPCSampler: java.lang.RuntimeException: Unable to resolve service by invoking protoc:
Unable to execute protoc binary
at vn.zalopay.benchmark.core.ClientCaller.init(ClientCaller.java:88)
at vn.zalopay.benchmark.core.ClientCaller.<init>(ClientCaller.java:53)
at vn.zalopay.benchmark.GRPCSampler.initGrpcClient(GRPCSampler.java:81)
at vn.zalopay.benchmark.GRPCSampler.initGrpcInCurrentThread(GRPCSampler.java:203)
at vn.zalopay.benchmark.GRPCSampler.initGrpcRequestSampler(GRPCSampler.java:133)
at vn.zalopay.benchmark.GRPCSampler.sample(GRPCSampler.java:90)
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:651)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:570)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268)
at java.lang.Thread.run(Thread.java:750)
我能够从本地 JMeter UI 和命令行成功运行 gRPC 采样器请求,但在 docker 容器中执行它时遇到问题
docker 文件:
FROM alpine/jmeter:5.6.3
COPY ./lib/jmeter-grpc-request.jar /opt/apache-jmeter-5.6.3/lib/ext/jmeter-grpc-request.jar
COPY ./lib/jmeter-plugins-manager-1.10.jar /opt/apache-jmeter-5.6.3/lib/ext/jmeter-plugins-manager-1.10.jar
RUN apk add protobuf
我的原型文件:
syntax = "proto3";
package com.grpc.spring;
option java_package = "com.grpc.spring.service";
option java_outer_classname = "Solutions";
option java_generic_services = true;
option java_multiple_files = true;
service SolutionService {
rpc getSolution (SolutionRequest) returns (SolutionResponse) {};
}
message SolutionRequest {
string name = 1;
}
message SolutionResponse {
string message = 1;
}
以下是来自本地/图像的协议版本:
本地:libprotoc 28.3 图片:libprotoc 24.4
协议版本的差异会对行为产生任何影响吗?
注:
jmeter-plugins-manager-1.10.jar
和jmeter-grpc-request.jar
我都将其从本地推送到图像。
任何帮助将不胜感激。预先感谢。
arch
命令并查看输出是什么。您可能需要重新编译或交叉编译您的原始文件
接下来考虑查看 jmeter.log 文件是否有任何可疑条目,并且至少对于您遇到问题的组件/插件,启用 JMeter 调试日志记录也是一个好主意。