Netty端口被占用问题
来源:互联网 发布:网游mac版的游戏有什么 编辑:程序博客网 时间:2024/05/21 18:46
问题:
最近发现Netty项目每次发布的时候Netty在重启时都会报端口被占用的异常, 需要过十几秒左右手动重启一遍, Netty才能恢复正常
目前猜测是由于Tomcat_restart的时候Netty执行相关的销毁操作, Channel.close().awaitUninterrupted() 以及 bossGroup和workerGroup在关闭时socket没有完全关闭, 也许是处于TIME-WAIT状态, 导致Netty在重启的时候报端口被占用
解决:
Netty BootStrap有一个Option SO_REUSEADDR, 作用是重用处于TIME_WAIT但是未完全关闭的socket地址, 由于我在本地和dev上在有大量请求的情况下重启也未发现有端口被占用的情况, 只能在线上发布的时候才能测试出来, 正好线上发布的那个版本 ... 我忘记开 SO_REUSEADDR了... 所以, 只能下次再看是否有效果了
相关:
1) TCP四次挥手
TCP的socket连接在服务端单方面关闭连接时, 会进入如下四次挥手流程(图片来源于网络)
此时服务端socket如果处于TIME-WAIT状态, 而又没有开启SO_REUSEADDR 则会出现端口被占用异常
2) SO_REUSEADDR(摘自百科)
这个套接字选项通知内核,如果端口忙,但TCP状态位于 TIME_WAIT ,可以重用端口。如果端口忙,而TCP状态位于其他状态,重用端口时依旧得到一个错误信息,指明"地址已经使用中"。如果你的服务程序停止后想立即重启,而新套接字依旧使用同一端口,此时 SO_REUSEADDR 选项非常有用。必须意识到,此时任何非期望数据到达,都可能导致服务程序反应混乱,不过这只是一种可能,事实上很不可能
0 0
- Netty端口被占用问题
- 端口被占用问题
- 端口被占用问题
- 端口被占用问题
- 解决端口被占用问题
- 系统端口被占用问题
- tomcat端口被占用问题
- Weblogic 端口被占用问题
- ADB端口被占用问题
- 解决端口被占用问题
- 端口号被占用问题
- 8080端口被占用问题
- 8080端口被占用问题
- Tomcat端口被占用问题
- tomcat端口被占用问题
- 8080端口被占用问题
- 解决端口被占用问题
- 关于JBOSS端口被占用的问题
- Matlab读写TIFF格式文件
- opencv 轮廓的长度,面积,外接矩形(平行坐标轴),处接最小矩形,处接圆 , 椭圆
- Netty4之Future/Promise异步模型 .
- Choosing Teams
- Java基础知识归纳-1-面向对象
- Netty端口被占用问题
- opencv 轮廓的凸包,凸缺陷
- 阅读笔记-时间管理-哈佛商学院
- Photos(PHCachingImageManager)
- 2016-01-05 工作笔记5
- SO_REUSEPORT学习笔记补遗
- C#控制台应用程序的设计
- Android自定义dialog实现支付宝支付成功样式
- 【2016新年版】年度精品 XP,32/64位Win7,32/64位Win8,32/64位Win10系统