项目中有两个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框架时不时报这种请求的异常出来,急!