天天看點

SQL Server出現錯誤: 4014

SQL Server出現錯誤: 4014

線下的測試機器老是報錯,從errorlog裡看到大量的4014錯誤

A fatal error occurred while reading the input stream from the network. The session will be terminated (input error: 0, output error: 0).
錯誤: 4014,嚴重性: 20,狀态: 16。      
SQL Server出現錯誤: 4014
SQL Server出現錯誤: 4014

于是谷歌了一下,發現了一篇文章:https://www.mssqltips.com/sqlservertip/3538/fixing-sql-server-fatal-error-4014/

大家知道現在的網卡内置功能都比較厲害,有些功能甚至可以代替CPU去執行,于是微軟釋出了Scalable Networking Pack (SNP) 可伸縮網絡包,可伸縮網絡包包括了以下3個主要功能

TCP/IP Chimney Offload

Receive Side Scaling (RSS)

Network Direct Memory Access (NetDMA)

大家可以用下面指令檢視上面3個功能是否是enabled

netsh int tcp show global      

一般作業系統會預設開啟Chimney Offload功能,這個是TCP/IP網絡包下推功能,本來是CPU處理的現在交給網卡處理,減輕CPU負擔,加快網絡包處理速度

但是不是所有網卡都支援Chimney Offload功能,由于線下測試機器是普通家用PC,是以網卡驅動并不帶有這個内置功能

解決辦法是禁用Chimney Offload

netsh int tcp set global chimney=disabled
netsh int tcp set global rss=disabled      
SQL Server出現錯誤: 4014

禁用之後,再執行netstat指令看一下處理是否遷移回CPU

netstat -t      
SQL Server出現錯誤: 4014

如果最後一列是InHost,那麼表示資料包的處理邏輯是CPU上完成,而不是在網卡上完成

至此,問題解決,errorlog也沒有發現4014錯誤

如有不對的地方,歡迎大家拍磚o(∩_∩)o 

本文版權歸作者所有,未經作者同意不得轉載。

繼續閱讀