DataReaders,慢客户端会导致连接数超过最大连接数

时间:2014-05-05 18:25:39

标签: c# asp.net c#-4.0 ado.net

使用DataReader时,在本例中为Response.Write(但我想它会适用于任何控件),慢速客户端会影响连接数吗?平均连接池通常最多有15个连接。因此,如果有100个用户点击该应用程序,其中50个用户连接速度很慢且延迟时间很长,那么连接数是否会超过最大连接数?

如果使用DataTable,我想所有数据都会加载到内存中,因此在执行Response.Write时连接不会保持打开状态。

示例:

using(SqlDataReader reader = DataUtility.GetReader("select * from employees"))
{
   while(reader.Read()) 
   {
      Response.Write(reader["emp_id"]).ToString();
      Response.Write(reader["username").ToString();
   }
}

VS

DataTable emps = DataUtility.GetDataTable("select * from employees");
foreach(DataRow row in emps.Rows)
{
      Response.Write(row["emp_id"]).ToString();
      Response.Write(row["username").ToString();
}

2 个答案:

答案 0 :(得分:1)

响应在服务器上缓冲,因此代码不会等待实际发送到客户端的响应。缓慢的连接不会使服务器代码运行得更慢。

如果您首先从数据库中获取所需的所有数据,然后关闭数据库连接并使用数据创建响应,那么您的服务器代码将更有效。这样,您可以使用较少的数据库资源尽可能短地打开数据库连接。


附注:我看到你在代码中使用select *,它从表中获取所有字段。您应该只指定实际将使用的字段,以便从数据库中获取尽可能少的数据。

答案 1 :(得分:0)

我们无法用给出的代码回答这个问题。连接数取决于您在代码中打开和关闭连接的时间。如果等待所有数据在关闭连接之前发送到客户端,则缓慢连接会产生影响。

大多数C#代码都不是这样编写的。通常,您打开一个连接,做一些工作并关闭连接。然后进行其他处理并将响应发送给客户端。

向我们展示更多代码,我希望您不会关闭连接,这会导致您的问题。

相关问题