【问题标题】:.NET performance tuning.NET 性能调优
【发布时间】:2012-02-15 03:30:08
【问题描述】:

我的 .Net 应用程序是一个 4.0 的 ASP.net 应用程序,具有大量数据库更新,并且在网格刷新某些执行以更新表等的事件时网格刷新。)问题是......你会猜测“吃了很多” ram' 在我的应用程序中。 (它在几分钟内轻松增长到 1GB 以上)...

我将如何解决这个问题?我将寻求哪种类型的优化?或者您认为哪种方法最适合我?

这一直困扰着我一段时间,但我一生都无法弄清楚是什么导致了瓶颈。我已经关闭了我的对象等。但不确定瓶颈是在 SQL 还是 ASP.net 后端。

【问题讨论】:

  • 如何更新/插入数据库?我的意思是您正在通过一笔交易更新一条记录?请提供更多细节..数据更新过程..或我们可以检查的任何代码..
  • @jason 你是如何填充网格的?你在使用数据集吗?您是否将所述数据集存储在会话中?你是如何编码网格的数据检索的?您是只返回当前页面所需的数据,还是返回所有 xxx 行只是为了显示其中的 100 行?有很多地方可以寻找问题

标签: asp.net sql-server 64-bit performance-testing


【解决方案1】:

可以是任何东西。

用于调试此类问题的工具称为内存分析器。有一个很好的名为“.NET Memory Profiler”(参见 memprofiler.com)的免费试用版。某些版本的 Visual Studio 还包括内存分析器。

作为一种猜测,我会说您将一些包含数据的对象保存在某个静态变量中,并且在您完成使用后不释放它。

【讨论】:

  • 这让我想到,我将独立检查所有对象以检查是否所有内容都已释放。 (=Nothing) 在他们的例行程序结束时。很有可能,想想我从未检查过的共享变量......我会让每个人都知道。
【解决方案2】:

以下是我的看法

我的 .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. 在重新填充网格后,在绑定数据之前将其处理掉。

您认为在我的应用程序中“吃了很多公羊”是什么意思。 (它 在几分钟内轻松增长到超过 1GB)...

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


您可以使用 ANTS MEMORY PROFILER 来解决内存泄漏问题

参考

ANTS MEMORY PROFILER

【讨论】:

  • 回答几个问题,SqlDataSource 是我使用参数化查询进行更新的“数据源”。与使用参数化选择查询相比,为查询创建存储过程会更快吗?它们只是一种线性 (SET [field] = @newvalue) 类型的查询。但是在不断增长的数据库中(目前只有 300 行,但预期超过 10000 行,如果我们现在遇到内存问题,我们肯定希望在继续之前解决这个问题。
  • 我去看看ANTS,听说过,没用过;分析一个 asp.net 应用程序是否相当容易实现?
  • -1 for ants ;) 去过那里,用过 - Scitech 好多了 ;) 抱歉,我喜欢他们的产品... .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 2021-07-22
  • 2013-05-26
  • 2013-10-17
  • 2018-03-06
  • 2016-06-25
  • 2018-04-20
相关资源
最近更新 更多