2015-11-11 2 views
0

Я работал в ASP.Net WebApp, который занимает много времени, чтобы загрузить определенную страницу ASPX. После первого раза страница загружается в браузере, в следующий раз эта проблема не заменяется в Production.ASP.Net WebApp Performance Issue

Update

я добавил журнал и выглядит, как показано ниже запрос с 1 минута 20 секунд, чтобы выполнить. Можете ли вы помочь мне оптимизировать его? Что на самом деле неправильно в запросе, который занимает так много времени в первый раз?

Log:

"11/12/15", "22:24:24", "ExecuteSQL - --- 4 ----", "9", ""

" 11/12/15" , "22:25:44", "ExecuteSQL - --- 5 ----", "9", ""

Запрос:

Выбор TOP 1 ПРЕОБРАЗОВАНИЯ (VARCHAR (15), Period_End_Date, 107) как PDate FROM PBHISTORY..STATEMENT_OF_CHANGE ORDER BY Period_End_Date DESC "," 7 "," "

Код C#:

общественная строка GetDateRangeReportingDate (интермедиат ReportID) { LogActivityVerbose ("GetDateRangeReportingDate - до того GetReportInfoById"); var report = GetReportInfoById (reportId); LogActivityVerbose («GetDateRangeReportingDate - после GetReportInfoById»);

 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

Я нашел решение моей проблемы с производительностью, о которой я говорил выше. Проблема была неправильной индексацией в таблице, и я исправил эту проблему, изменив индексирование таблицы, из которой мы извлекаем записи в процессе производства.

Кроме того, я исправил класс сущности Framework уровня с помощью SQL Data Adapter и с помощью операторов. Приложение работает очень быстро в производстве. Спасибо за вашу помощь.

частная строка ExecuteSqlNew (строка SQL) { строку ConnectionString = ConfigurationManager.ConnectionStrings [ "PBReportCS"] ConnectionString. string commandTimeOut = ConfigurationManager.AppSettings ["PBReportCommandTimeout"]. ToString(); Результат DataSet = новый 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; 

}

0
  • Вы развертывание отладки сборки против релиза сборки (отладочной не будет содержать оптимизацию компилятора и загрузят символы отладки)?

  • Вы слишком часто перерабатываете свои бассейны для пула приложений?

  • Вы загружаете большое количество данных при запуске страницы в какой-то инициализации?

  • Также обратите внимание на начальную загрузку новой сборки ASP .net, предварительно скомпилированной, будет запущена при запуске, так что это займет некоторое время.

Больше возможностей:

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

Спасибо очень много. Я поместил несколько журналов и, похоже, эта проблема имеет отношение к запросу на основе журнала. Ниже метода требуется больше минуты, чтобы выполнить. Можете ли вы предложить что-то для его оптимизации? – user3430726