Netty为什么无法接收到其中一个客户端的请求?

项目中有两个web应用(W1、W2)使用Netty调用同一个后台服务S1。开始都是正常的,运行一段时间(不确定多长时间)后,W1-S1可正常请求-响应,但W2无法请求到S1。

跟踪日志发现,W2执行 channel.writeAndFlush 返回 isSuccess=true

logger.info("发送一个请求(" + id + "):" + channel.remoteAddress() + Constants.RPC_SEPARATOR + request);
channel.writeAndFlush(channelObject).addListener(future -> {
    if (!future.isSuccess()) {
        logger.error("channel writeAndFlush failed");
        syncObject.release();
    } else {
        logger.info("channel writeAndFlush success");
    }
});

但服务端未接收到请求。可以看到channel writeAndFlush success,但就是没有接收到响应。(可以判断服务端是正常的,W1-S1还是一直请求/响应正常。且W2-S1的心跳也一直维持)。

后续来自W2的请求一直都是这种状态,直到把W2重启重新建立连接后正常。

有没有人知道是什么原因?最近生产的rpc框架时不时报这种请求的异常出来,急!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问