socket 服务器端 大量CLOSE_WAIT 状态连接

javaee_ssh 2013-08-12 05:09:09
最近与三家运营商对接数据(我方为服务器端),为每个运营商发布一个应用。两家连接均正常,其中一家每过一两天后就会出现大量的CLOSE_WAIT连接(netstat -t 或lsof -i:8001),导致程序异常对方不能再次连接,必须重启应用。
在java 中能否通过相关参数来控制(Linux系统),救解
...全文
700 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaee_ssh 2014-02-25
  • 打赏
  • 举报
回复
是自己的代码程序处理问题。今天上CSDN才发现还没有结贴
javaee_ssh 2013-08-12
  • 打赏
  • 举报
回复
谢谢各位的回答,已按照二楼的方法修改代码并发布测试环境,回去再找找一楼的方法,怎么设置操作系统的。
晓风吹雾 2013-08-12
  • 打赏
  • 举报
回复
// 绑定套接字前启用 SO_REUSEADDR 允许在上一个连接处于超时状态时绑定套接字。 socket.setReuseAddress(getSoReuseAddress()); -> 设置为on // close关闭的的延迟时间,为了尽可能将package发送出去。 // 在默认情况下,当调用close方法后,将立即返回;如果这时仍然有未被送出的数据包,那么这些数据包将被丢弃。 // 如果将linger参数设为一个正整数n时(n的值最大是65,535),在调用close方法后,将最多被阻塞n秒。 // 在这n秒内,系统将尽量将未送出的数据包发送出去;如果超过了n秒,如果还有未发送的数据包,这些数据包将全部被丢弃; socket.setSoLinger(getSoLingerOn(),getSoLingerTime());
MiceRice 2013-08-12
  • 打赏
  • 举报
回复
Java自己不行,涉及到参数修改的执行权限问题,你用Runtime试试看吧; 主要是要调操作系统参数,大幅减少CLOSE_WAIT等待时间。 这种问题一般是因为网络异常 或 对方没有答复CLOSE所导致。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧