系統裡面用到C#模擬Http請求,上線到伺服器後,發現日誌中大量出現“由於系統緩衝區空間不足或佇列已滿,不能執行套接字上的操作” 或“通常每個套接字地址(協議/網路地址/埠)只允許使用一次”
執行 netstat -ano 發現有大量的Tcp連結,懷疑可能是伺服器各種請求太多了導致的
伺服器是windows server 2019。
透過查詢資料得知,windows server 2019 預設的啟動埠是: 49152 ,埠數是:16384,具體驗證是可以在cmd命令視窗輸入“netsh int ipv4 show dynamicport tcp” ,能查詢出來,截圖如下:
相當於伺服器最多隻能啟動 16384 個埠,所以可能是這裡不夠。
然後cmd命令執行:
netsh int ipv4 set dynamicport tcp start=29152 num=36384
這句話,將啟動埠調成了 29152 ,數量 36384 ,執行後後重啟伺服器,再次執行“netsh int ipv4 show dynamicport tcp”
這樣子就把埠數調成了 一共有 36384個了,重啟後,應用程式日誌再也沒出現過那個錯誤了
記錄一下過程,以便大家遇到相同問題的排查,也給自己記錄一下後續方便自己修改其他伺服器的。