由100多个用户组成的小组使用的应用程序是使用VB6和RDO编写的。即将进行替换,但仍旧保留。用户搬到街对面的另一座建筑物,问题开始了。我对这个问题的看法是带宽,但是我不得不和其他人说这是数据库。用户经常使用该应用程序体验网络运行缓慢,但通常还会遇到工作站任务。该应用程序移动大型音频文件,并偶尔对它们进行索引。有时数据库会挂起。我们有许多高端,健壮的SQL Server,因此这不是服务器问题。我发现的是,事务是在连接上开始的,但是由于通信错误而无法正确完成。来自其他连接的更新被阻止,它们继续堆积,用户下降了半天。当我得知一个问题时,我开始做的是在确认数据库已挂起之后,将数据库设置为单用户,然后再设置为多用户以清除连接。他们都必须重新启动应用程序。今天,我发现他们的新位置存在带宽限制,他们经常将带宽限制最大化。我认为在旧位置有一个为许多人服务的大管道,但是现在他们在为一小部分人提供服务的小管道上,这对瞬时的高带宽需求也不那么容忍。今天,我发现他们的新位置存在带宽限制,他们经常将带宽限制最大化。我认为在旧位置有一个为许多人服务的大管道,但是现在他们在为一小部分人提供服务的小管道上,这对瞬时的高带宽需求也不那么容忍。今天,我发现他们的新位置存在带宽限制,他们经常将带宽限制最大化。我认为在旧位置有一个为许多人服务的大管道,但是现在他们在为一小部分人提供服务的小管道上,这对瞬时的高带宽需求也不那么容忍。
我想知道的是,当达到带宽限制时,数据包到底会发生什么变化。我也想知道SQL Server通信中会发生什么。某些数据包丢失了吗?他们会开始不按顺序到达吗?定时问题会发生吗?
我计划开始控制诸如文件在应用程序中移动之类的事情。但是我也想知道有关瞬态高需求的网络节点上通常存在哪些配置。
这是一个非常广泛的问题。网络是获得良好性能的关键(尤其是在可用性组或任何类型的镜像设置中)。当事务在SQL Server上完成时,它们将被放置在输出缓冲区中。然后,应用程序需要“拾取”该数据,清除其输出缓冲区,然后继续。我认为(不知道您的配置)您的应用程序无法完成往返,因为网络管道中充满了请求,因此这些应用程序无法获得成功完成并关闭所需的内容。由于网络无法跟上应用程序和SQL Server尝试执行的操作,因此会造成严重破坏。然后,您在1车道的高速公路上有200辆汽车的堆积。
事后看来,在每个人过马路之前,应该对网络容量进行广泛的测试。显然,这没有发生,因此您有点想用自己拥有的东西做自己想做的事情。如果公司无法获得稳定的网络连接,则情况可能会超出您的控制范围。如果您是DBA,我强烈建议您与您的高层交谈,并向他们解释网络容量减少的后果。通常,表明无所作为的后果会导致采取行动。
出于好奇,有什么方法可以分析堆积发生时正在等待什么?我认为这ASYNC_NETWORK_IO
通常是表示SQL正在等待应用程序返回并获取其数据的指示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句