我们在运行负载测试时收到此错误。运行 3 或 4 次负载测试后,我们看到此错误:UNAVAILABLE:不可用。然后,错误后的下一个请求需要近 30 秒才能完成。
这是完整的堆栈跟踪:
io.grpc.StatusRuntimeException: UNAVAILABLE: unavailable
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:275)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:256)
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:169) at co.com.mycompany.myappname.grpc.client.ValidateTransactionGrpc$ValidateTransactionBlockingStub.validate(ValidateTransactionGrpc.java:157) at co.com.mycompany.myappname.grpc.client.AppDetectorClient.invoke(AppDetectorClient.java:21)
at co.com.mycompany.myappname.infrastructure.adapters.GrpcAdapter.provide(GrpcAdapter.java:33)
at co.com.mycompany.myappname.application.services.AppDetectorService.execute(AppDetectorService.java:42)
at co.com.mycompany.myappname.application.services.$AppDetectorService$Definition$Intercepted.$$access$$execute(Unknown Source)
at ...
如您所见,没有“引起”的痕迹。
我们目前正在使用 java 11 和 micronaut (v3.9.1) grpc-protobuf 版本 1.49.0 grpc-netty-shaded 版本 1.49.0 grpc-存根版本 1.49.0 grpc-服务版本 1.49.0
我看到这里报告了一些类似的错误(https://github.com/grpc/grpc-java/issues?page=4&q=UNAVAILABLE),但没有像这个错误这样的错误。
查看服务器的日志,但没有找到任何内容。
gRPC Java 不会对任何库生成的错误使用字符串“unavailable”(小写)。因此,这可能是您正在负载测试的服务生成的错误。您需要调试服务器。