1. 程式人生 > >使用個推C# SDK後服務器出現大量端口顯示為CLOSE_WAIT

使用個推C# SDK後服務器出現大量端口顯示為CLOSE_WAIT

cnblogs 本地 使用 cmd 人員 發現 輸入 管理 api

問題起因

象往常一樣登錄下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