我有一个 asp.net Web 应用程序,它与我们称为服务器“A”的一台服务器中的 SQL Server 数据库一起使用。在我们的城域网中应用速度很好
我将我们的 Web 应用程序发布到使用服务器“A”上的数据库的另一台服务器(服务器“B”)。
从服务器“B”调用应用程序时,我们的速度非常慢。
网络没有问题,当我从服务器“B”调用服务器“A”应用程序时,我们没有任何减速
两个 Web 应用程序绝对相同并且使用一个数据库
我真的很困惑;是什么原因?
有谁能够帮我?
我有一个 asp.net Web 应用程序,它与我们称为服务器“A”的一台服务器中的 SQL Server 数据库一起使用。在我们的城域网中应用速度很好
我将我们的 Web 应用程序发布到使用服务器“A”上的数据库的另一台服务器(服务器“B”)。
从服务器“B”调用应用程序时,我们的速度非常慢。
网络没有问题,当我从服务器“B”调用服务器“A”应用程序时,我们没有任何减速
两个 Web 应用程序绝对相同并且使用一个数据库
我真的很困惑;是什么原因?
有谁能够帮我?
有各种各样的东西在这里起着至关重要的作用。
当您从托管数据库的同一台服务器上运行 asp.net 应用程序时,sql server 连接很可能是通过“命名管道”或“共享内存”进行的。与 tcp ip 相比,这两者都是与服务器通信的非常快速的方法。当您在另一台服务器上托管 asp.net 应用程序时,它被迫使用 tcp-ip 进行通信。
网络可能很好,但您还应该检查其他因素,例如网络上的帧大小和 MSS。拥有更大的帧大小有助于 sql server 有效地利用整个可用速度。连接在网络中的交换机和路由器等设备也起着至关重要的作用。
除此之外,我怀疑您的应用程序使用了不适当的架构或遵循了错误的做法。例如,如果您想要列出产品,您可以进行查询以从数据库中获取所有产品并将结果过滤到特定页面,这是错误的做法。理想情况下,查询应该只获取您想要显示的那些记录。使用数据适配器而不是读取器也会导致这样的问题,因为他们尝试读取整个内容并创建内存表。
我关闭了所有服务器上的防火墙,但没有看到任何变化。但是当我转到 Windows FireWall 时,在高级选项卡中,在网络连接设置部分(在 Windows Server 2003 中)并取消选中所有连接。
我的速度问题解决了。