我们刚刚完成了从 SQL 2000 到 SQL 2008 R2 的迁移,并且已经开始间歇性地收到带有以下两条错误消息的 SqlExceptions:
我们有 3 个 Web 服务器连接到这个 SQL Server,运行着大约 100 个应用程序(都访问 SQL Server 上相同的 8 个数据库)。
因为这些异常没有发生在 2000 服务器上,所以我们觉得这不太可能是应用程序问题(但是,我们不排除它)。网站上的流量是典型的,排除了高流量问题。旧的 SQL 2000 机器有 4 个 CPU 和 8 GB RAM,而新机器有 24 GB RAM 和 16 个 CPU(当前和问题期间未充分利用)。
这些错误在几个小时前发生了大约 5 分钟,并且尚未再次发生。
sys.dm_os_ring_buffers 系统视图不显示这些断开连接的条目,并且服务器或客户端上都没有相应的事件日志条目。
一些谷歌搜索发现了一些类似的报告,但似乎没有什么是确定的(见下面的链接)。从 SQL 2000 迁移到 SQL 2008 R2 后,有人看到过这样的错误吗?
链接:
我们已经在我们的环境中找到并解决了这个问题。我所理解的描述如下(请原谅下面可能存在的不准确之处;这是我(作为软件开发人员)理解我们的网络管理员(他也与我们的托管公司合作)向我提供的描述的方式。
最终查明原因是涉及负载均衡器的网络配置问题。我们预计负载均衡器位于互联网和我们的 Web 服务器之间,并且我们所有的服务器都可以自由地相互通信。不幸的是,网络的设置方式使得所有网络流量(包括 SQL Server 和 Web 服务器之间的流量)都通过负载均衡器。负载均衡器被配置为限制通过它的带宽,当超过限制时,它只会丢弃数据包。当服务器之间发生大文件传输时(例如,从数据库服务器复制数据库备份等),通常会超出该限制。我们很难看到这一点,因为我们无法访问负载均衡器(只有我们的托管提供商可以访问它),而且据我们所知,我们的网络接口还远未饱和。此外,这些问题非常零星(大约每 3-5 个月出现几分钟)。
修复方法是重新安排环境,使我们的内部网络流量不经过 LB;我相信网络被重新安排以适应单臂负载平衡架构。自从进行此更改以来,我们没有遇到间歇性连接问题。
归档时间: |
|
查看次数: |
15617 次 |
最近记录: |