gpt4 book ai didi

asp.net - SQL Server 2005 网络 IO 等待时间(ASYNC_NETWORK_IO 等待类型)问题

转载 作者:行者123 更新时间:2023-12-03 02:35:20 27 4
gpt4 key购买 nike

我们的 Web 应用程序在高峰时段遇到性能问题,目前该应用程序分为一台 2003 IIS6 Web 服务器和一台 SQL Server 2005 DB 服务器。数据库服务器上的查询时间看起来不错(大约 30 毫秒),CPU 较低(低于 20%),但查询在 Web 服务器上执行可能需要很长时间(超过 1 秒)。

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

根据一些研究,问题似乎要么是网络容量不足,要么是网络服务器处理结果的速度不够快。我该如何调查它是什么,然后解决?

我们使用 NHibernate 作为数据层,因此据我所知,没有使用 DataReader。尽管有一个表有一列包含压缩的 XML 文档,但没有已知的查询会返回大型结果集。

提前致谢

额外请求的信息

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

最佳答案

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

ASP 主机上的 CPU 负载是多少?网卡中断率是多少? HTTP 流量是否与 TDS (SQL) 流量在同一网卡上共享?如果是,是否可以将它们分离在不同的网卡上?

ASP 客户端和 SQL 之间配置什么协议(protocol)?网络管道还是 TCP?如果是 Net Pipes,您可以将其关闭并强制其使用 TCP,以便将 SMB 排除在外吗?

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

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

关于asp.net - SQL Server 2005 网络 IO 等待时间(ASYNC_NETWORK_IO 等待类型)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3162084/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com