none
关于sql2008数据库连接被积极拒绝的问题(很异常) RRS feed

  • 问题

  • 本人的是web应用  web 是放在10.10.10.2 这个服务器上面  数据库放在10.10.10.3上面(安装sql2008 R2),并且开启了1433端口对web服务器的访问权限

    在正常访问的时候都没有问题,但是在交易高峰期会出现数据库访问不通的情况

    连接字符串 如果使用的是Microsoft SQL Server Native Client 10.0  会出现这个提示 TCP 提供程序: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次

    如果使用的是一般的SQLOLEDB 驱动  会提示 服务器不存在或拒绝连接

    此时在web服务器10.10.10.2 上面测试  telnet 10.10.10.3 1433   会立刻被断开

    (如果正常这个端口没有东西在监听的话 会过一段时间才会提示无法连接),这说明是某个程序积极拒绝的

    因为这个已经在生成环境中使用了一段时间了,所以基本的配置肯定没问题

    哪位大师兄遇到这个情况,帮帮忙指点一下吧

    这个问题很紧急,帮帮忙!

    2013年5月31日 13:59

答案

  • 代码问题    当打开一个conn连接到数据之后,使用完没有及时关闭conn    导致连接不能有效的返回到连接池中

    从而会导致不断的向数据库建立新连接

    这里也给自己一个提醒 代码规范很重要

    2013年6月3日 1:53

全部回复

  • Did you see any connetion error in ring buffer on sql server? If there's connection issue, need set netmon to find out the cause. 
    2013年5月31日 14:22
  • 好的  我先看看

    但是如何找到问题的原因呢?

    搜索了相关文档,介绍了查看的方法 但是没有说明如何 使用什么工具去解决

    2013年6月1日 1:07
  • Ring buffer is DMV, you can query it in ssms. Netmon is windows tool.
    2013年6月1日 1:39
  • 我再来看下

    目前 我在web服务器上面用netmon查看了连接情况  有很多 10.10.10.2  连接到10.10.10.3 的Time_wait 连接

    而 在数据库服务器上面用netmon查看     一切正常    只有和web服务器之间有十几个  ESTABLISHED的连接

    不知道这个情况 现在是否正常

    2013年6月1日 2:36
  • Did you have sql connection issue around that time? You should let it run and save traces. Next time sql connection fails, you can go back and look at trace to figure out what happened.
    2013年6月1日 3:03
  • thank you !

    这个是在正式环境 昨天晚上出现这个问题,一大堆客户骂过来 现在想起来还是心惊胆跳

    真不想再遇到这个情况了,如果问题重现的话 估计又要挨骂了,但是如果问题不出现的话 就不知道怎么去进一步查了


    顺便说下   节日快乐!!
    2013年6月1日 3:35
  • 貌似查明到问题的原因了

    原因不在于数据库服务器 而是在web服务器上面

    windows操作系统默认匿名分配的端口号是5000个的  每次web服务器连接sql数据库都会有分配一个默认端口号 当关闭之后会进入TIME_WAIT状态并等待默认的4分钟

    如果你的web服务器没有使用连接池,将会导致很快使用完5000个端口号 然后再有的连接 因为分配不了端口号,自然而然的无法访问了

    参考文章:

    http://support.microsoft.com/kb/328476/zh-cn

    我的问题特征和这个很相似

    大师兄帮忙看看是不是这个原因

    2013年6月1日 6:52
  • Likely issue, any reason to disable connection pooling?

    2013年6月1日 15:15
  • 代码问题    当打开一个conn连接到数据之后,使用完没有及时关闭conn    导致连接不能有效的返回到连接池中

    从而会导致不断的向数据库建立新连接

    这里也给自己一个提醒 代码规范很重要

    2013年6月3日 1:53