Sql server MS SQL Server慢速网络性能(异步网络IO)和快速网络10Gbit

Sql server MS SQL Server慢速网络性能(异步网络IO)和快速网络10Gbit,sql-server,performance,networking,sql-server-2012,Sql Server,Performance,Networking,Sql Server 2012,我在虚拟机上得到了一台MS SQL DB server大型物理机和一个应用程序服务器C工具。应用程序需要从具有数百万行和多GB大小的DB服务器表中读取大型数据集 从应用服务器运行select语句时,我在服务器上得到一个异步网络IO等待,网络利用率不超过50-100Mbit,尽管它们之间有一条10Gbit线路。当我通过普通的Windows文件共享传输一个大文件时,它会达到大约10Gbit,因此网络速度很快 我试图改变驱动程序:OLEDB vs ODBC v13。我还试图将网络包大小从非常小的1kb

我在虚拟机上得到了一台MS SQL DB server大型物理机和一个应用程序服务器C工具。应用程序需要从具有数百万行和多GB大小的DB服务器表中读取大型数据集

从应用服务器运行select语句时,我在服务器上得到一个异步网络IO等待,网络利用率不超过50-100Mbit,尽管它们之间有一条10Gbit线路。当我通过普通的Windows文件共享传输一个大文件时,它会达到大约10Gbit,因此网络速度很快

我试图改变驱动程序:OLEDB vs ODBC v13。我还试图将网络包大小从非常小的1kb改为32kb。 到目前为止,没有运气改善它

你能给我一些提示我下一步可以试试什么吗

应用程序的更改或数据的批量传输方式(而不是直接查询)不是选项

SQL Server 2012 11.0.6579物理版,MS 2012R2,380GB RAM,10GBit 应用服务器虚拟机,MS 2012 R2,128GB ram,10Gbit

异步\u网络\u IO等待几乎从来都不是由于网络速度慢造成的!他们的名字有误导性

它通常是一个客户端应用程序,不能足够快地使用数据。i、 e.SQL server发送数据的速度快于应用程序的使用速度

罪魁祸首往往是逐行处理数据的客户端应用程序。是否将数据发送到UI

您提到您的应用程序服务器位于虚拟机上。虚拟机是否在主机上设置了内存保留

如果您在app server上运行SSMS,可以通过更改SSMS选项“在SSMS中执行后丢弃结果”来测试速度:

SSM重新绘制数据的速度可能非常慢。设置此选项后,SSMS将从线路上读取所有数据,但不会显示数据。这将使您能够以SQL server可以运行的速度运行查询,而不受客户端应用程序速度的影响

乔·萨克(Joe Sack)的观点很古老,但仍然相关:

我想我会分享一些指令性的指导,如果你看到 异步网络IO或网络IO等待类型:

确定大型结果集,并与应用程序团队或开发人员验证如何使用这些结果集。危险信号包括 查询大型结果集但不处理多个结果集的应用程序 一次几行

确保客户端应用程序处理其请求的所有行。如果不是所有的行都需要或使用-只考虑 例如,查询TOP X所需的行

查看服务器上的NIC配置,确保没有问题物理卡问题,自动检测不选择最快的 速度

例如,验证应用程序/客户端与SQL Server实例路由器之间的网络组件

作为旁注-如果您正在进行服务器端数据加载,则 仍显示NETWORKIO,请检查共享内存协议是否正确 已为SQL Server实例启用,然后检查会话 使用网络传输=“共享内存”通过 sys.dm_exec_连接


您可以使用测试将数据获取到同一服务器的速度。这将排除任何与网络相关的内容。可能客户端是CPU受限的,正在使用结果。谢谢!你让我走对了路。我知道这个选项是存在的,但我被网络利用率分散了注意力。无论如何,我需要联系供应商,找出他们在应用程序中处理行速度不够快的原因。很高兴提供帮助!