我一直在使用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;
}
答案 0 :(得分:0)
您是否正在部署调试版本与发布版本(调试版本将不包含编译器优化并将加载调试符号)?
您的应用池是否经常回收?
您是否在某种初始化的页面启动时加载了大量数据?
另外请记住,新的ASP .net预编译程序集的初始加载将在启动时进行Jitted,因此确实需要一些时间。
更多可能性:
和
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;
}