当前位置: 首页 > news >正文

java nio close_wait_Java NIO 操作总结

问题:

1、Java NIO 出现大量CLOSE_WAIT或TIME_WAIT的端口无法释放

CLOSE_WAIT:

参考:http://my.oschina.net/geecoodeer/blog/191774、http://blog.csdn.net/ruixj/article/details/1871979

解决:检查代码可发现,一端的socket调用了close,但是另外一端的socket没有调用close,于是在另外一端加上了socket.close()函数,使得CLOSE_WAIT消失,TIME_WAIT出现。

一般来说,到了TIME_WAIT就是比较正常的情况了,下面是TCP状态转换图:

TCP-State.JPG?imgmax=576

close操作相当于:(操作/A操作后状态/B操作后状态)

A:我不想说了,但是我可以听到你的(close,发送FIN/A:FIN_WAIT_1/B:ESTABLEISHED)

B:点头(接收FIN,发送ACK/A:FIN_WAIT_1/B:CLOSE_WAIT)

A:点头(接收ACK/A:FIN_WAIT_2/B:CLOSE_WAIT)

B:我也不想说了,我在有限时间内还可以听到你的(close,发送FIN/A:FIN_WAIT_2/B:TIME_WAIT)

A:点头(接收FIN,发送ACK/A:TIME_WAIT/B:TIME_WAIT)

B:点头(接收ACK/A:TIME_WAIT/B:CLOSED)

TIME_WAIT:

参考:http://my.oschina.net/geecoodeer/blog/191774、http://www.blogjava.net/cooperzh/archive/2011/12/20/366884.html

解决:socket.setReuseAddress(true);

2、Java NIO 多线程程序长时间运行时出现“打开的文件过多”错误

参考:无

解决:

1)ls /proc/进程号/fd,发现超多被占用的文件描述符

2)检查代码,查看一下哪里没有关闭SocketChannel和Selector(特别是Selector!由于是多线程,子线程打开的资源忘记关闭会遗留并造成悲剧啊:()

相关文章:

  • java zmq订阅_java zmq消息队列
  • java按键数据库添加_详解Java MyBatis 插入数据库返回主键
  • java ee jdbc_JavaEE JDBC 补充注意点
  • java 返回前台excel_Java后台读取excel表格返回至Web前端
  • eclipse for java web_【Javaweb】Eclipse for JavaEE新建的Web工程自动生成web.xml
  • gopython 获取python 全局线程锁失败_python线程互斥锁递归锁死锁
  • java collections 复制_Java公开课|Java Collections类查复制操作是你学习Java的超车途径,还不来看看就晚了...
  • java 线程的移动问题_Spring Boot中的多线程问题和ThreadLocal
  • Java 经常用到access_用Java连接到Microsoft Access 2007数据库的正确方法是什么?
  • java1.8 interface_JDK1.8新特性——FunctionInterface
  • php file_get_contents 中文,php file_get_contents函数怎么用
  • php 平均下载速度,php限制下载速度的实现方法
  • docker lamp php7,环境准备:docker-compose安装 LAMP、LNMP、php扩展
  • java system.in 怎么写,java 里System.in 输入流如何使用
  • php 两数最大相同子串,用javascript求两个字符串最大的相同的子串(代码实例)...
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • CSS相对定位
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • SQL 难点解决:记录的引用
  • ViewService——一种保证客户端与服务端同步的方法
  • Vue学习第二天
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 嵌入式文件系统
  • 如何进阶一名有竞争力的程序员?
  • const的用法,特别是用在函数前面与后面的区别
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (TOJ2804)Even? Odd?
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (强烈推荐)移动端音视频从零到上手(下)
  • (三)mysql_MYSQL(三)
  • (算法)Game
  • (新)网络工程师考点串讲与真题详解
  • (一)Thymeleaf用法——Thymeleaf简介
  • (已解决)什么是vue导航守卫
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)【Hibernate总结系列】使用举例
  • (转)C#调用WebService 基础
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .net操作Excel出错解决
  • .NET开发不可不知、不可不用的辅助类(一)
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .skip() 和 .only() 的使用
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • @Responsebody与@RequestBody
  • [Android]一个简单使用Handler做Timer的例子
  • [Angular 基础] - 数据绑定(databinding)
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型