SQL SERVER 4014报错

昨天一个客户反映说他们的服务器一天业务程序卡死两三次,每次都要杀掉进程重新开才能正常维持一段时间

我连接服务器之后没多久刚好遇到故障出现,看日志发现SQL SERVER有报4014错误

TIM图片20170408224900.png

在网上查找一下,发现一些相关问题的处理办法,特此记录一下

大家知道现在的网卡内置功能都比较厉害,有些功能甚至可以代替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功能

解决办法是禁用Chimney Offload

netsh int tcp set global chimney=disabled
netsh int tcp set global rss=disabled

257159-20160321130045776-1172216897.jpg

禁用之后,再执行netstat命令看一下处理是否迁移回CPU

netstat -t

257159-20160321130231292-594445588.jpg

如果最后一列是InHost,那么表示数据包的处理逻辑是CPU上完成,而不是在网卡上完成

至此,问题解决,errorlog也没有发现4014错误

参考:

https://www.mssqltips.com/sqlservertip/3538/fixing-sql-server-fatal-error-4014/
添加新评论