当其中一台的dubbo提供者线程池满了后,后续消费者在消费到这台满了的机器上是,虽然提供者报错线程池满,但是没有明确给消费者返回异常信息,而是丢弃该请求,这样消费者在以为提供者没执行完直到超时报错,有没有人遇到过?
我们也是这样的,provider满了,consumer还是要等到超时才行,我们就是把超时设置短些。。
感觉这是个bug 提供者池子满了抛出去就好了 消费者拿到异常根据策略是返回失败还是重试其他机器自己决定 直接把消费者的请求丢掉而不返回任何状态有点类似防火墙啊
并发请求导致线程池没有空闲的时候,新的请求被拒绝了,但是并没有立刻返回给消费方,让消费方重新选择或者报错提示,所以导致消费方一直苦苦等待直到超时才发现这次调用失败了,是因为拒绝后的请求并没有被写入channel反馈给消费方
把dispatcher的模式设置为message即可(原生默认是all)
dubbo.protocol.dispather=message
dubbo.protocol.dispatcher=message
或者直接修改代码中的默认值,如https://github.com/taige/dubbo/commit/529f26bde8d9f79b6ba4952191818a300ac28028
@wenjiahao 你是用的哪个版本,最新版本的在线程池满后已经是会正常发送异常消息到consumer端了;或者是不是设置了twoway=false
像2.5.3版本
@chickenlj 的确是2.5.3 你用的哪个版本啊
也碰到了……一直超时 某些服务定的60s真的该死 /(ㄒoㄒ)/~~
Most helpful comment
http://manzhizhen.iteye.com/blog/2391177