close
文章出處

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

 

于是谷歌了一下,發現了一篇文章: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

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

netstat -t

 

 

如果最后一列是InHost,那么表示數據包的處理邏輯是CPU上完成,而不是在網卡上完成

 

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

 

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

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

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 AutoPoster 的頭像
    AutoPoster

    互聯網 - 大數據

    AutoPoster 發表在 痞客邦 留言(0) 人氣()