小弟现在做了一个网站 但是没得设置最大最小连接数 我找朋友测试了下 8个人访问就可能会出现超时 就会报错 然后我在连接字符串里面加了最大连接数为1000目前不会出现这中问题 但是有些时候我去看的时候 在线的人数就3-5个人 我在数据库输入sp_who里面就是500-600条数据 当前活动连接就是几百个活动连接 我仔细检查了N遍了 我所有的连接都是close了的 如果这样的话我的项目正式上线的话每天在线的人数在500-1000左右 那不是几下就超时了 求求大侠们给点看发 到底是怎么回事啊 这个问题吧我折腾了好几天了!

解决方案 »

  1.   

    用的是xp、windows 7 之类的系统肯定会这样。
      

  2.   

    服务器版操作系统 + 服务器版SQLSERVER 肯定没有连接数的问题
      

  3.   

    WINDOWS2003或2008 其它版本操作系统IIS都有连接数限制.
    SQLSERVER 也是要用企业版. 其它版本也都有连接数限制.
      

  4.   

    最好用windows 2003 profressional问题就解决了
      

  5.   

    确定一定以及肯定的说是资源没释放掉,你改成1万个上线也没用,这只能改变一时的现状。
    所以我现在一般写using(Sqlconnection conn)这种类型。
    你把所有连接数据库的地方现在都加上try catch 就行,在catch里面关掉。
      

  6.   

      /// <summary>
            /// 提交sql语句执行(增删改)
            /// </summary>
            /// <param name="sql">需要提交的sql语句</param>
            /// <param name="spms">sql语句中可能包含的参数数组</param>
            /// <returns>受影响的行数</returns>
            public static int ExecuteNonQuery(string sql,SqlParameter[] spms)
            {
                SqlCommand cmd = PrepareCommand(sql,spms);
                int rowsAffected = 0;
                try
                {
                    cmd.Connection.Open();
                    rowsAffected = cmd.ExecuteNonQuery();
                }
                catch (SqlException ex)
                {
                    throw ex;
                }
                finally
                {
                    if (cmd.Connection.State != ConnectionState.Closed)
                        cmd.Connection.Close();
                }
                return rowsAffected;
            }      /// <summary>
            /// 提交sql语句执行读取
            /// </summary>
            /// <param name="sql">需要提交的sql语句</param>
            /// <param name="spms">sql语句中可能包含的参数数组</param>
            /// <returns>读取器DataReader</returns>
            public static SqlDataReader ExecuteReader(string sql, SqlParameter[] spms)
            {
                SqlCommand cmd = PrepareCommand(sql, spms);
                SqlDataReader reader = null;
                try
                {
                    cmd.Connection.Open();
                    //如果reader关闭,则所使用的连接自动关闭
                    reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
                catch (SqlException ex)
                {
                    throw ex;
                }
                return reader;
            }
      

  7.   

    这个上面是我用的sqlHelper 我在自己机子上试了N次 我查询在页面所要用到Reader方法的刷新了N遍然后早SP_who 几乎没增加连接池 但是当时一直以为是Reader没得关闭所以只测试了所调用Reader方法的页面 现在我突然想起了 我们的网站一般客户只是进一个页面 就是事实及时的页面 每分钟要去修改下数据库里面一列的值 我想是不是ExecuteNonQuery的哪个方法有问题 但是我ExecuteNonQuery的方法也是关闭了的啊 (事实记时:就是计算你当前在这个页面停留了好久每个客户登陆就会给他创建一个时间 然后没分钟去刷新一次数据库 因为这个时间非常重要 必须要每分钟存到数据库里面)
      

  8.   


    try
      {
    ---------->链接内容
      }
      catch (Exception e)
      {
        throw e;
      }
      finally {
        ------>资源释放
      }
      

  9.   

    我是释放了的 现在服务器上面挂的Reader方法下面也加上了finally{--释放}现在现在看来没得效果 连接池还是不停的增加
      

  10.   

    619 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    620 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    621 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    622 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    623 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    624 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    625 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    626 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    627 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    628 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    629 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    630 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    631 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    632 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    633 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    634 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    645 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    646 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    647 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    648 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    649 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    650 0 sleeping                       admin DNION-51DEA6B64                                                                                                                  0     XC2010 AWAITING COMMAND
    725 0 runnable                       admin JJD                                                                                                                              0     XC2010 SELECT          
    727 0 sleeping                       admin JJD                                                                                                                              0     master AWAITING COMMAND这个是我通过sp_who查看到的内容 只是下面几十条数据
      

  11.   

    reader = cmd.ExecuteReader(CommandBehavior.CloseConnection
    Datareader也要关闭- -
      

  12.   

    我是关闭了的 这个是一个sqlHelper 我程序调用这个ExecuteReader方法后我会关闭的
      

  13.   

    发现问题了 N多方法每个方法都跟踪了下 发现有3个地方的close没得起作用 方法当中一个return后只直接跳到方法最后了 没得执行关闭 现在好了 100个人在线连接池也没得涨了 哈哈