2012-02-15 89 views
2

我的.Net应用程序是一个4.0 ASP.net应用程序,有很多数据库更新,网格刷新后,网格刷新执行更新表的某些事件等)问题是...你会猜测什么'在应用程序中吃了很多公羊'。 (在几分钟内它容易增长到1GB以上)....NET性能调优

我该如何解决这个问题?我会寻求什么类型的优化?或者你认为最适合我的方法是什么?

这一直在困扰我一阵子,但我不能为我的生活找出什么导致瓶颈。我关闭了我的对象等,但不确定瓶颈是在SQL还是ASP.net后端。

+0

如何更新/插入到数据库?我的意思是你正在更新一笔交易的记录?请提供更多的细节..数据更新过程..或任何我们可以检查的代码.. – 2012-02-15 03:36:59

+0

@jason你如何填充网格?你在使用数据集吗?你是否在会话中存储所述数据集?你如何编码网格的数据检索?您是仅返回当前页面所需的数据,还是只返回所有xxx行以显示其中的100行?有很多地方可以查找问题 – clyc 2012-02-15 03:48:13

回答

0

下面是我的意见

我的.NET应用程序是一个4.0 ASP.net应用程序有很多数据库更新

使用报表ADO.Net

using (SqlConnection con = new SqlConnection("Your Connection String")) 
{ 
    using (SqlCommand cmd = new SqlCommand("Your Stored Procedure Name", con)) 
    { 
     SqlParameter param = new SqlParameter(); 
     param.ParameterName = "Parameter Name"; 
     param.Value = "Value"; 
     param.SqlDbType = SqlDbType.VarChar; 
     param.Direction = ParameterDirection.Input; 
     cmd.Parameters.Add(param); 
     cmd.ExecuteNonQuery(); 
    } 
} 

和电网刷新在网格刷新执行到 更新表等

  1. 某些事件使用分页让您记录您的网格......以避免性能/内存管理问题
  2. 一旦网格将重新填充,在绑定数据之前进行处理。

你会猜测是什么在我的应用程序 '吃RAM的很多'。 (它 在几分钟内容易增长到1GB以上)...

您是否使用DataSet/DataTable?请使用后丢弃。否则,你将面临崩溃Memory Out of Exception ...


您可以使用ANTS内存分析器的内存泄漏

参考

ANTS MEMORY PROFILER

+0

要回答几个问题,SqlDataSource是我使用参数化查询进行更新的“数据源”。对于使用参数化select查询而言,为查询创建存储过程会更快吗?他们只是一个班轮(SET [field] = @newvalue)类型的查询。但是越来越多的数据库(目前只有300行,但期望值超过10000),如果我们现在有内存问题,我们肯定希望在我们前进之前解决。 – Jason 2012-02-15 03:47:29

+0

我将检查ANTS,我听说过它,从未使用它;是否很容易实现以剖析一个asp.net应用程序? – Jason 2012-02-15 03:47:58

+0

-1为蚂蚁;)在那里,使用它 - Scitech是一个很好的;)对不起,我喜欢他们的产品一般...赛特内存分析器,视觉工作室性能分析器和你areyn appyn。 – TomTom 2012-02-15 04:52:50

2

可以是任何东西。

用于调试此类问题的工具称为内存分析器。有一个叫做“.NET Memory Profiler”的好软件(见memprofiler.com)有免费试用版。某些版本的Visual Studio也包含一个内存分析器。

作为一个猜测,我会说你将一些含有数据的对象保存在某个静态变量中,而不是在你使用它时释放它。

+0

这让我想到,我将独立检查所有对象以检查是否所有内容都已发布。 (=无)在他们的例程结束。这是非常可能的,考虑共享变量我从来没有检查过这些......我会让每个人都知道。 – Jason 2012-02-15 04:46:21

+0

+1。我也使用那个。它岩石。 – TomTom 2012-02-15 04:53:20