python grpc截止期超过错误的百分比很大

python grpc截止期超过错误的百分比很大,python,amazon-ecs,grpc-java,grpc-python,Python,Amazon Ecs,Grpc Java,Grpc Python,在调用scalagrpc服务器的pythongrpc客户端中,我收到了很多超过截止日期的错误 我报告的是客户机和服务器的指标,服务器报告的时间与客户机报告的时间之间存在很大差异,我认为这不能仅用网络延迟来解释(因为差异很大)。返回的对象大小相似,我假设序列化时间与网络时间相比是可忽略的 我已将超时设置为20毫秒 我的客户端代码很简单: self.channel = grpc.insecure_channel(...) self.stub = MyService_pb2_grpc.MyServic

在调用
scala
grpc服务器的
python
grpc
客户端中,我收到了很多超过截止日期的错误

我报告的是客户机和服务器的指标,服务器报告的时间与客户机报告的时间之间存在很大差异,我认为这不能仅用网络延迟来解释(因为差异很大)。返回的对象大小相似,我假设序列化时间与网络时间相比是可忽略的

我已将超时设置为20毫秒

我的客户端代码很简单:

self.channel = grpc.insecure_channel(...)
self.stub = MyService_pb2_grpc.MyServiceStub(self.channel)
timeout = 0.02
try:
  start_ms = time.time()
  grpc_res = self.stub.getFoo(Request(...), timeout=timeout)
  end_ms = time.time()
  total_duration_ms = int((end_ms - start_ms) * 1000)
....
except Exception as e:
  status_code = str(e.code()).split('.')[1]
  logger.error('exception ....: %s', status_code) # around 20% deadline exceptions
我的服务器代码平均报告5ms,客户端代码平均报告
7ms
,但如上所述,在
20ms时超时20%


是否有办法调试此问题的根本原因,即较低级别的日志记录等?

您可以尝试在环境变量下运行:
GRPC\u详细性=调试GRPC\u跟踪=全部

平均可能是5-7毫秒,但是尾部延迟呢?这里的客户机代码看起来不像是在超过最后期限的情况下测量延迟。客户端和服务器之间有什么样的网络连接?您能否使用iperf之类的工具对其进行描述?grpc服务是使用SRV dns的ECS(也尝试使用负载平衡器)。客户端正在EC2实例中以非常低的负载运行。ECS和EC2在同一个AZ中。如果超过了最后期限,延迟是不相关的,因为我只是试图减少最后期限。我曾尝试将截止时间提高到30毫秒,解决了截止时间问题,但很明显,客户端的总体平均延迟增加了。在我们的案例中,我们将grpcio与gevent补丁一起使用,并发现类似的截止时间超过错误,尽管大多数服务器端响应都是在超时时间内做出的。你能找出原因吗?