ASP.Net WebApp性能问题

时间:2015-11-11 21:46:32

标签: c# sql asp.net performance application-pool

我一直在使用ASP.Net WebApp,这需要很长时间才能加载特定的ASPX页面。第一次将页面加载到浏览器中后,下次此问题在生产中无法替换。

更新

我添加了一些日志,看起来如下查询需要1分20秒才能执行。你能帮我优化一下吗?第一次花了这么长时间的查询中究竟出了什么问题?

记录:

" 11/12/15"," 22:24:24"," ExecuteSql - --- 4 ----",&# 34; 9"""

" 11/12/15"," 22:25:44"," ExecuteSql - --- 5 ----",&# 34; 9"""

查询:

SELECT TOP 1 CONVERT(VARCHAR(15),Period_End_Date,107),为PDATE FROM PBHISTORY..STATEMENT_OF_CHANGE ORDER BY Period_End_Date DESC&#34;&#34; 7&#34;&#34;&#34; < / p>

C#代码:

public string GetDateRangeReportingDate(int reportId)         {             LogActivityVerbose(&#34; GetDateRangeReportingDate - 在GetReportInfoById&#34之前;);             var report = GetReportInfoById(reportId);             LogActivityVerbose(&#34; GetDateRangeReportingDate - 在GetReportInfoById&#34之后;);

        string sql = string.Format(@"SELECT TOP 1 CONVERT(varchar(15), Period_End_Date, 107) as PDate FROM {0}..{1}
                                           ORDER BY Period_End_Date DESC", _historyDatabase, report.SourceTableName);

        LogActivityVerbose("GetDateRangeReportingDate - before ExecuteSql ");
        var data = ExecuteSql(sql);
        LogActivityVerbose("GetDateRangeReportingDate - after ExecuteSql ");
        while (data.Read())
        {
            return data["PDate"].ToString();
        }
        return null;
    }

2 个答案:

答案 0 :(得分:0)

  • 您是否正在部署调试版本与发布版本(调试版本将不包含编译器优化并将加载调试符号)?

  • 您的应用池是否经常回收?

  • 您是否在某种初始化的页面启动时加载了大量数据?

  • 另外请记住,新的ASP .net预编译程序集的初始加载将在启动时进行Jitted,因此确实需要一些时间。

更多可能性:

Web site takes unusually long time to start the first time it is accessed, (Up to 68 seconds in total)

Fixing slow initial load for IIS

我会先检查这些事情。

答案 1 :(得分:0)

我找到了上面提到的我的性能问题的解决方案。问题表中的索引错误,我通过更改表的索引来解决这个问题,我们在生产中获取记录。

此外,我通过使用SQL数据适配器和使用语句修复了Framework级实体类。 App在生产中运行速度极快。谢谢你的帮助。

私有字符串ExecuteSqlNew(string sql)         {             string connectionString = ConfigurationManager.ConnectionStrings [“PBReportCS”]。ConnectionString;             string commandTimeOut = ConfigurationManager.AppSettings [“PBReportCommandTimeout”]。ToString();             DataSet result = new DataSet();             string pDate =“”;

        try
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    conn.Open();
                    cmd.CommandTimeout = int.Parse(commandTimeOut);
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    adapter.SelectCommand = cmd;
                    adapter.Fill(result);
                    adapter.Dispose();
                    conn.Close();
                    pDate = result.Tables[0].Rows[0]["PDate"].ToString();
                }
            }
        }
        catch(Exception ex)
        {
            throw ex;
        }
        return pDate;

}