[英]Java Netty connection timed out
我正在使用Netty在Ubuntu服务器上实现TCP服务器,但是我遇到了连接超时的怪异问题。
在此服务器中,客户端应保持长时间连接,而不发送任何看起来不错的数据:
2015-09-23 02:15:14 INFO ChannelInboundHandlerAdapter:42 - data
2015-09-23 02:45:14 INFO ChannelInboundHandlerAdapter:42 - data
闲置30分钟后,此处的客户端可以发送两个消息,而不会出现任何问题。 但是在这种情况下:
2015-09-23 03:15:14 INFO ChannelInboundHandlerAdapter:42 - data
2015-09-23 03:26:47 INFO ChannelInboundHandlerAdapter:155 - Connection timed out
即使客户端仅站立了10分钟而未发送任何消息,服务器也抛出了连接超时异常。
这是Netty的配置:
public static void main(String args[]) {
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch)
throws Exception {
ch.pipeline().addLast(
"frameDecoder",
new DelimiterBasedFrameDecoder(
Integer.MAX_VALUE, Delimiters
.lineDelimiter()));
ch.pipeline().addLast(new GpsMessageHandler());
}
})
.option(ChannelOption.SO_BACKLOG, 128)
.childOption(ChannelOption.SO_KEEPALIVE, true);
ChannelFuture f = b.bind(port).await();
f.channel().closeFuture().syncUninterruptibly();
}
catch (Exception e) {
}
finally {
workerGroup.shutdownGracefully();
bossGroup.shutdownGracefully();
}
}
我检查了iptables防火墙,一切似乎都正常(所有端口均打开)。
任何帮助将不胜感激..
childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, 7000)
此选项处理来自客户端的每条消息的超时。 但就您而言,
ChannelFuture f = b.bind().sync();
也许有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.