【发布时间】:2016-06-17 02:55:36
【问题描述】:
我的应用程序 java,正在服务器中运行,打开端口并通过套接字与设备建立连接。一切都运行到某个点,很多连接都停留在 CLOSE_WAIT 中,即使我的应用程序完成了我收到的数据包的处理。
我说的是CPU开始使用双资源,打开的文件越来越多,CLOSE_WAIT状态的数量也越来越多。
在wireshark中,发送的数据包离开CLOSE_WAIT状态,我们看到服务器没有向客户端发送FIN。
PS:我在 ubuntu 14.04 可信赖的服务器上,我使用的是 Netty 3.10.1
这是我制作管道的代码:
@Override
public ChannelPipeline getPipeline() {
ChannelPipeline pipeline = Channels.pipeline();
if (resetDelay != null) {
pipeline.addLast("idleHandler", new IdleStateHandler(GlobalTimer.getTimer(), resetDelay, 0, 0));
}
pipeline.addLast("openHandler", new OpenChannelHandler(server));
if (loggerEnabled) {
pipeline.addLast("logger", new StandardLoggingHandler());
}
addSpecificHandlers(pipeline);
if (filterHandler != null) {
pipeline.addLast("filter", filterHandler);
}
if (reinitializeHandler != null) {
pipeline.addLast("reinitialize", reinitializeHandler);
}
if (refineHandler != null) {
pipeline.addLast("refine", refineHandler);
}
if (noFilterHandler != null) {
pipeline.addLast("nofilter", noFilterHandler);
}
if (specificFilterHandler != null) {
pipeline.addLast("specificfilter", specificFilterHandler);
}
if (reverseGeocoder != null) {
pipeline.addLast("geocoder", new ReverseGeocoderHandler(reverseGeocoder, processInvalidPositions));
}
pipeline.addLast("handler", new TrackerEventHandler(dataManager));
return pipeline;
}
【问题讨论】:
标签: java linux sockets tcp netty