为什么会出现close_wait我就不说了,网上有很多
说下我遇到的情况以及解决方案
出现异常后我们使用netstat 命令 看到NGINX与我们服务之间有大量的close_wait
产生原因
我们的角色是支付系统
业务系统->支付系统->第三方
业务系统调用我们设置了五秒未响应则主动关闭,支付系统收到关闭请求之后开始回收系统资源,但是我们调用第三方的资源却迟迟不能释放,后来逐步排查发现是我们调用第三方的时候 第三方提供的sdk有问题 ,在sdk内部没有设置请求的超时时间,导致系统资源无法及时回收,支付系统收到关闭请求后无法真正的关闭当前连接(进程一直卡在与第三方建立连接的地方)所以出现closewait,close_wait越来越多 导致正常的连接无法建立,进而产生雪崩效应
现象就是每次第三方的网络波动,无法与支付系统建立连接时我们的支付系统都会挂掉
解决
修改第三方的sdk解决,建立连接时设置超时时间即可
最后
永远相信第三方都是垃圾,及时自己是第三方的时候也是一样的