加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – SQL Server 2005网络IO等待时间(ASYNC_NETWORK_IO等

发布时间:2020-12-16 06:43:28 所属栏目:asp.Net 来源:网络整理
导读:我们在高峰时段在Web应用程序上遇到性能问题,目前在一个2003 IIS6 Web服务器和一个SQL Server 2005数据库服务器之间分配. DB服务器上的查询时间看起来很好(大约30ms),CPU很低(低于20%),但查询可能需要很长时间才能在Web服务器上执行(超过1秒). 我正在寻找pe
我们在高峰时段在Web应用程序上遇到性能问题,目前在一个2003 IIS6 Web服务器和一个SQL Server 2005数据库服务器之间分配. DB服务器上的查询时间看起来很好(大约30ms),CPU很低(低于20%),但查询可能需要很长时间才能在Web服务器上执行(超过1秒).

我正在寻找perfmon的线索,并发现平均网络IO等待时间约为400毫秒,这可以很好地解释性能差异.我还在SSMS内部运行了一些查询,看到每秒大约有10,000ms的累积ASYNC_NETWORK_IO等待类型.

从某些研究来看,似乎问题是网络容量不足,或者Web服务器没有足够快地处理结果.我如何调查它是什么,然后解决?

我们将NHibernate用于数据层,因此据我所知,没有使用DataReader.虽然有一个表包含一个包含压缩XML文档的列,但没有已知的查询返回大型结果集.

提前致谢

其他请求的信息

> Sql Server设置为使用TCP / IP
和共享内存协议
>我们每页大约提出4个DB请求,没什么可笑的
>在高峰时间,DB Server发送1.5MB /秒
>最高时,Web服务器CPU约为60%
> AT峰值时,Web服务器NIC负载为13MB /秒. 8MB正在发送,5MB正在接收.相同的NIC处理SQL和HTTP流量
>我们确实使用了一些缓存,但应用程序非常动态,因此大多数时候都需要最新的数据

解决方法

数据库引擎正在等待ASP进程使用发送给它的数据包.这可以在ASP.Net进程本身(IP数据包从NIC出队,但它们不被进程消耗,在这种情况下,ASP.Net主机可能是罪魁祸首,如在坏代码或CPU中可能是主机操作系统无法足够快地消耗IP数据包(来自组合HTTP负载的IP负载和SQL往返负载的组合对于主机来说太多了).

ASP主机上的CPU负载是多少?什么是NIC中断率? HTTP流量是否在具有TDS(SQL)流量的同一NIC上共享,如果是,可以在不同的NIC上将它们分开吗?

ASP客户端和SQL之间配置了什么协议?网管还是TCP?如果是Net Pipes,你可以将其关闭并强行使用TCP,这样你就可以将SMB排除在等式之外吗?

每个HTTP请求您要对数据库进行多少次往返?如果超过4,您是否可以考虑重构代码以将其减少到每次请求3-5次往返?

您是否在ASP进程上缓存任何内容以避免额外的往返数据库?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读