Windows伺服器【由於系統緩衝區空間不足或佇列已滿,不能執行套接字上的操作】問題調查
阿新 • • 發佈:2019-01-03
今天測試反應了一個問題,說介面返回的速度變慢了,並且返回的資料也不對。然後就找到了我o(╥﹏╥)o。
第一個反應就是查日誌,不查不要緊,一查嚇一跳,整個伺服器上所有的站點都報錯了。異常資訊如下:
System.AggregateException: One or more errors occurred. ---> System.Net.Sockets.SocketException: 由於系統緩衝區空間不足或佇列已滿,不能執行套接字上的操作。
看著資訊的提示應該是socket資源被耗盡了。第一反應就是重啟系統,但是這只是應急的做法,後面一定還會出現,一定是程式哪裡不對了。
首先,通過命令檢視一下埠的佔用情況
netstat -ano
果然有大量的Tcp連線處在了 FIN_WAIT_2 的狀態,並且都是訪問同一個地址,這個6379埠是Redis服務常用的埠(先懷疑是redis服務),
現在的問題就是定位是哪個程序了,根據提示 Pid=13220,使用命令(或者開啟【工作管理員】)
tasklist
我遇到的問題是 這個PID根本就不存在,這可怎麼整,這個程序可能早就被回收了。突然間我想到是不是事件檢視器能有些線索?
我開啟的【事件檢視器】,找到了【系統】,右鍵進行查詢,果然找到了問題癥結所在。
我開啟這個站點的配置檔案,看到了那個redis的配置,是個域名! ping一下這個域名
果然各種連不上,IP也對上了! 我們公司的策略連不上是正常的,這個配置不應該使用正式版的配置。