【发布时间】:2019-10-28 19:50:37
【问题描述】:
我正在从 java 服务进行 gRPC 调用,并使用 withDeadlineAfter(1000, TimeUnit.MILLISECONDS).callApi()
此调用在大多数情况下都会超时 (DEADLINE_EXCEEDED)。当我检查日志时,它看起来如下
2019-06-14 06:30:09.153 +0000 - [DEBUG] - from io.grpc.internal.ClientCallImpl - Call timeout set to '999861860' ns, due to context deadline. Explicit call timeout was not set.
2019-06-14 06:30:09.909 +0000 - [ERROR] - from application - [ epoch=1560493809909 req=1560493808679.df7ns.10.0.3.96 ] - EVENT_MIGRATION:Failed to create channel: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED: deadline exceeded after 999695013ns
如果我理解正确,截止日期设置在时间 06:30:09.153 为 09.153 之后的 1 秒,实际上意味着带有存根的调用应该在之后失败10.153。异常在此注册时间之前被抛出。
有人可以解释一下这种行为吗?
【问题讨论】:
-
似乎是网络问题,您服务的 ping/traceroute 和检查已启动并正在运行。还要检查您的防火墙是否没有阻止服务端口上的网络连接。