使用個推C# SDK後服務器出現大量端口顯示為CLOSE_WAIT
阿新 • • 發佈:2017-07-17
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