apache / dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.
https://dubbo.apache.org/
Apache License 2.0
40.52k stars 26.43k forks source link

org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout #8514

Closed caofangqi closed 3 years ago

caofangqi commented 3 years ago

Environment

提示 timeout 但是其实并没有 timeout ,服务提供方没有报错信息 我们通过 telnet 去调用只用了 400ms 但是超时时间设置是 6000ms

Steps to reproduce this issue

问题是偶现的 但是我们有一个API 传入某个参数 必现这个问题。 很神奇

Caused by: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout. start time: 2021-08-16 16:18:20.765, end time: 2021-08-16 16:18:31.755, client elapsed: 0 ms, server elapsed: 10990 ms, timeout: 6000 ms, at org.apache.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:188) at org.apache.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:164) at org.apache.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:108) at org.apache.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:154) at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) at com.alibaba.csp.sentinel.adapter.dubbo.DubboAppContextFilter.invoke(DubboAppContextFilter.java:37) at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) at com.alibaba.csp.sentinel.adapter.dubbo.SentinelDubboConsumerFilter.invoke(SentinelDubboConsumerFilter.java:52) at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75) at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:47) at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) at org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:50) at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:72) at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:77) at org.apache.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56) at org.apache.dubbo.rpc.cluster.support.FailfastClusterInvoker.doInvoke(FailfastClusterInvoker.java:48)

dkisser commented 3 years ago

可以到客户端和服务端通过抓包分别确定请求发起和请求接受到的时间,以排除网络抖动的问题

caofangqi commented 3 years ago

可以到客户端和服务端通过抓包分别确定请求发起和请求接受到的时间,以排除网络抖动的问题

我这边批量 跑任务 大概几万次请求 只有这个参数请求 会出现问题 而且后面反复跑了好几次 都是这个参数请求出现问题 其他的都没有问题 可以排除是网络抖动引起的

AlbumenJ commented 3 years ago

服务端使用 Arthas 拦截判断下是否处理时间超长

caofangqi commented 3 years ago

服务端使用 Arthas 拦截判断下是否处理时间超长

试过了 没有

changfubai commented 3 years ago

请问解决了么?和api的参数有关的话,是有什么特殊的处理逻辑么?这个参数对应的响应内容有什么特殊的嘛

AlbumenJ commented 3 years ago

服务端使用 Arthas 拦截判断下是否处理时间超长

试过了 没有

序列化相关的看下有没有报错

CrazyHZM commented 3 years ago

If there are still problems, you can reopen the issues.

caofangqi commented 3 years ago

服务端使用 Arthas 拦截判断下是否处理时间超长

试过了 没有

序列化相关的看下有没有报错

也没有 不过 debug 到 org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler#handleResponse 这个地方 一直没有返回 知道 Timeout , 可是 provider 已经返回了 猜测可能是网络原因

helei810304 commented 2 years ago

服务端使用 Arthas 拦截判断下是否处理时间超长

试过了 没有

序列化相关的看下有没有报错

也没有 不过 debug 到 org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler#handleResponse 这个地方 一直没有返回 知道 Timeout , 可是 provider 已经返回了 猜测可能是网络原因

解决了么,我也是用2.7.3,然后也出现这样的情况