sql-server – 命令管道连接在受到负载时关闭

我们正在托管我们提供消息服务的服务.当消息到达时,它通过连接到数据库并查询订阅表来检查应该将哪些订户发送到该订户.

几个月前,当消息服务尝试连接时,我们开始看到以下错误:

An error has occurred while establishing a connection to the server.

(provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)
(Microsoft SQL Server, Error: 5)

An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)
(Microsoft SQL Server, Error: 1326)

我们当时正在托管SQL Server 2008的虚拟服务器上运行,我们正在转向物理硬件上的集群SQL Server解决方案.

移动到物理硬件后,错误消失了,所以我们将其归结为与虚拟服务器有关.然而,现在又回来了.

似乎在高负载时发生错误.

有没有人经历过为什么会这样?有没有人有解决它的经验?

最佳答案
您认为什么是高流量?

关闭命名管道并打开TCPIP
它的沟通更轻松.在我的SQL安装中,我从不使用命名管道,除非应用程序与SQL服务在同一台机器上,而且确实……从不…我总是将应用程序和SQL Server分开,因为监控和性能测量更加困难获得和破译.

从SQL Server分离应用程序/服务
此外,如果您在同一服务器上安装了SQL和应用程序,请将它们放在彼此不同的服务器上,以便SQL服务器专用.

索引和统计维护
确保所有索引和统计信息都得到维护.有时,当统计数据和索引陈旧或碎片化时,活动可能足够高,这本身就消耗了大部分资源.特别是标准安装,没有调整CPU和RAM固定(见下一项).

将CPU / RAM固定到设置,以便SQL不会完全使用OS / Networks / Services

>更新CPU Affinity以使用除1或2 cpu以外的所有内容(如果框有8 cpus,使用6或7表示SQL,并且未选中1或2用于OS /网络/服务)
>将SQL Server的MIN和MAX RAM设置为“固定”在相同的RAM设置(如果框有8GB或RAM,将MIN设置为6144KB,MAX设置为6144KB),或MIN =(MAX Machine RAM * 20) %)或MAX =(MAX Machine RAM * 10%)四舍五入为1024KB的倍数.

最后两个设置有助于确保SQL的资源不会被SQL完全占用,并且操作系统和网络以及其他服务可以响应并执行其标准请求.我有过这么多活动的情况(同时用户1K,所有索引,统计数据等都很好),盒子资源完全由SQL消耗,网络服务报告无法访问该盒子.一旦我做了这些改变,并且从那时起就一直这样做,我的许多资源消耗问题已经消失了.

您甚至可以使用命名管道尝试最后两个,它应该工作,因为网络可以响应高流量.但我会推荐TCPIP.

转载注明原文:sql-server – 命令管道连接在受到负载时关闭 - 代码日志