日期:2014-05-17  浏览次数:20449 次

高度频发的数据库拒绝连接
本帖最后由 ChargeForward 于 2012-12-15 01:21:59 编辑
场景描述:  
两台机器webapp和database,都是两个网卡,一个网卡属于公网网关,另外一个网卡用于于内网通信, 地址分别为10.0.0.101和10.0.0.100,内网网卡用一根网线直连!
webapp用的是.net4.0 MVC3,database是sqlserver2008

webapp的数据库连接字符串是: Server=10.0.0.100;DataBase=mydatabase;Uid=uid1;pwd=pwd1;

webapp网站概率性的出现如下错误:

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: Named Pipes Provider, error: 40 - 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。)  

网站每小时有上千次访问量吧, 这种错误能报个50次左右

虽然不是每次访问数据库都会报这个错, 但这个报错的频率高的有点吓人,  现在网站还没开始推广,如果以后网站开始做推广, 那这种频率的报错是不可接受的, 大家帮忙分析下吧!

------解决方案--------------------
貌似超过了最大连接数。 因为很多连接处于等待状态,查下阻塞量吧。数据库性能遇到大瓶颈导致的。
------解决方案--------------------
性能遇到瓶颈 原因多种 ,还是要查看下连接失败时的数据库连接数和当时的任务等待情况。
------解决方案--------------------
那就查看平时的任务等待 ,进行优化 。
------解决方案--------------------
暂时把webapp服务器和database服务器的windows防火墙关闭试试..

并测试一下网线状况是否良好,即连续ping测试通讯时的丢包率如何.

------解决方案--------------------
偶发的连接失败原因比较多,需要做监控来才能诊断,这包括数据方面与网络方面的,如果是网络方面的,个人很难分析的出来原因。
------解决方案--------------------
创建一个作业,没一分钟搜集阻塞情况然后存入一个专用的库中,以便分析。