was启动时9080端口被占用,如何关闭FIN_WAIT1状态的连接

在重启websphere7.0服务器后,发现怎么也启不起来,提示9080端口占用,可是was的进程已不存在。

后用命令:netstat  -anp|grep 9080  发现有一个连接状态为FIN_WAIT1,一直没有释放,百度了很多资料都没有手动关闭这种连接的方法,只能重启服务器。

下面是从国外网站找到的解决方案,不用重启服务器:

1、sysctl -a |grep tcp_max_orph                             记下  net.ipv4.tcp_max_orphans   的值  赋给orig_orphans

2、sysctl -w net.ipv4.tcp_max_orphans=0   然后等待FIN_WAIT1的消失,可以用 netstat -np|grep 9080  反复查看,直到没有任何条目

3、sysctl -w net.ipv4.tcp_max_orphans=$orig_orphans

FIN_WAIT1 是 TCP 连接的一种状态,它表示连接关闭的阶段之一。当一方发送了 FIN(终止连接)报文后,进入 FIN_WAIT1 状态,等待对方的确认。 在 FIN_WAIT1 状态下,发送方仍然可以接收对方发送的数据。它等待对方发送 ACK(确认)报文作为对 FIN 报文的确认。如果接收到对方的 ACK 报文,连接将进入 FIN_WAIT2 状态。如果在一定时间内没有收到对方的 ACK 报文,或者收到了对方的 RST(复位)报文,则连接会直接关闭FIN_WAIT1 状态通常是一个短暂的状态,在正常情况下不会停留太久。如果连接长时间停留在 FIN_WAIT1 状态,可能是由于以下原因之一: 1. 对方没有发送 ACK 报文:对方可能由于某种原因未正确处理并发送 ACK 报文,导致连接无法继续进入 FIN_WAIT2 状态。可以通过网络抓包或日志来确认是否有 ACK 报文被丢失或未发送。 2. 对方在接收到 FIN 报文后长时间未响应:如果对方在接收到 FIN 报文后长时间没有响应,可能是由于对方应用程序的问题,导致无法及时发送 ACK 报文。 请注意,如果应用程序频繁地打开和关闭连接,并且使用相同的本地 IP 地址和端口号,可能会导致连接在 TIME_WAIT 状态下保持较长时间,进而导致 FIN_WAIT1 状态的持续时间延长。在这种情况下,可以尝试使用不同的本地 IP 地址和端口号来避免连接复用。 如果长时间停留在 FIN_WAIT1 状态引起了问题,可以考虑调整操作系统的参数或检查应用程序的代码逻辑,以确保连接能够正常关闭
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值