首页 > 代码库 > 使用个推C# SDK后服务器出现大量端口显示为CLOSE_WAIT

使用个推C# SDK后服务器出现大量端口显示为CLOSE_WAIT

问题起因

象往常一样登录下APP,结果提示服务器端接口错误。吓得我赶紧上服务器上看看。

 

第一步:检查原因

因为只要服务器出错,后台会通过Log4net记录错误日志,看看日志怎么说。

 技术分享

关键字是“超出本地计算机网络适配器卡的名称限制”,google一下,大概意思是本地端口被占用完了。不能响应了。

 

第二步:检查下端口占用,打开cmd,输入“netstat -an”查看下端口占用。

技术分享

超级多的本地端口被打开,状态为CLOSE_WAIT。对方的端口搜索了下,没有明显发现是哪家公司,但是就是这固定的2-3个IP地址。

 

第三步:netstat -an没有显示具体是那个进程占用的。下载一个TCPView看看试试

技术分享

发现是进程ID为59872的进程占用的。

 

第四步:打开任务管理器,显示PID。

技术分享

发现是一个IIS站点占用的,而且这个站点没有做任何事,只做推送。推送用的xx公司推送的SDK(就事论事,不说公司)。加上上面的IP地址访问后提示“没有正确的查找到Json接口”

几乎可以确定是xx公司推送SDK的问题。

 

回想一下,这个网站是做推送用的,当另外的站点调用这个站点做推送的时候,xx公司推送SDK提交一个http请求,但是没有释放。一直占用了这个端口。下一次推送又占用一个,一直到端口占用完毕。

 

解决:

第一步:先重启IIS,果然端口不占用了,访问也恢复正常了。

第二步:与xx公司技术支持人员联系,修改SDK。虽然回馈还算及时,但是最终的结果是没有很好的办法。

好吧,推送已经集成到了APP,不能轻易变动。只好把服务器的推送SDK从C#版本改成RestAPI了。改成RestAPI之后问题解决,也从侧面佐证了应该是C# SDK的问题。

 

使用个推C# SDK后服务器出现大量端口显示为CLOSE_WAIT