крайний срок Python GRPC превысил ошибки в больших процентах - PullRequest
0 голосов
/ 02 апреля 2019

В клиенте python grpc, вызывающем сервер scala 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

Мой код сервера сообщает в среднем 5 мс, код клиента сообщает в среднем 7ms, но, как уже упоминалось, достиг 20% времени ожидания при 20ms

Есть ли способ отладить основную причину этой проблемы, то есть ведение журнала низкого уровня и т. Д .?

1 Ответ

1 голос
/ 03 апреля 2019

Вы можете попробовать запустить в переменных окружения: GRPC_VERBOSITY=DEBUG GRPC_TRACE=all https://github.com/grpc/grpc/blob/master/doc/environment_variables.md

...