Новое приложение Webform, использующее EF и EDS, временно замораживает IE - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть новое приложение ASP.Net 4.0 Webform. Он написан с использованием Entity Framework 4.0 и использует EntityDataSource для примерно 90% доступа к данным (в основном, для элементов управления ListView и DropDownList).

Пользователи сообщают, что иногда IE "зависает". Кажется, что происходит во время обратной записи, IE станет полностью белым, и страница никогда не будет отображаться. Пользователь может закрыть IE и запустить его обратно, и приложение всегда в порядке.

Похоже, у меня проблема с ресурсами. Либо ОЗУ сервера, ОЗУ SQL, соединения с базой данных SQL и т. Д. В журнале событий ничего (кроме сегодняшней ошибки!) На клиентском ПК или сервере, когда это происходит (и, кажется, это происходит 1-3 раза в день). случайным пользователям).

Сегодня у меня был пользователь, ожидающий его и получивший ошибку ниже (и это также было в журнале событий). Я не уверен, что это ошибка, которую получают другие, или это не связанная ошибка. Проблема в том, что я не на сайте. Я могу получить доступ к серверу только ночью, и, как я уже сказал, в журналах событий ничего нет. Я думал об установке Spotlight на SQL (я использовал его раньше, очень приятно) или какой-то другой инструмент мониторинга SQL. Во-первых, я хотел бы получить совет от экспертов по переполнению стека.

Любой совет? (Кроме как не использовать EntityDataSource! Lol)

О да ... вот та ошибка, о которой я упоминал выше:

Ошибка сервера в приложении '/'.

Истекло время ожидания. Период ожидания истекший до завершения операция или сервер не отвечает.

Описание: необработанное исключение произошло во время исполнения текущий веб-запрос. Пожалуйста, просмотрите трассировка стека для получения дополнительной информации о ошибка и откуда она возникла код.

Сведения об исключении: System.Data.SqlClient.SqlException: Тайм-аут истек. Период ожидания истекший до завершения операция или сервер не отвечает.

Ошибка источника:

Создано необработанное исключение во время исполнения текущего веб-запрос. Информация относительно Происхождение и место исключения можно определить с помощью исключения трассировка стека ниже.

Трассировка стека:

[SqlException (0x80131904): время ожидания истекший. Истек срок ожидания до завершения операции или сервер не отвечает.]

System.Data.SqlClient.SqlConnection.OnError (SqlException исключение, Boolean breakConnection) + 404

System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning () + 412

System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) + 1363

System.Data.SqlClient.SqlDataReader.ConsumeMetaData () + 58

System.Data.SqlClient.SqlDataReader.get_MetaData () + 118

System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior, runBehavior, String resetOptionsString) + 6312385

System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) + 6313986

System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, метод String, Результат DbAsyncResult) + 538

System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, метод String) + 28

System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior поведение, строковый метод) + 256

System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehaviorповедение) + 19

System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands (EntityCommand entityCommand, поведение CommandBehavior) + 617

[EntityCommandExecutionException: произошла ошибка при выполнении определения команды.Подробности см. Во внутреннем исключении.]

System.Web.UI.WebControls.EntityDataSourceView.ExecuteSelect (аргументы DataSourceSelectArguments) + 1599

System.Web.UI.DataSourceView.Select (аргументы DataSourceSelectArguments,DataSourceViewSelectCallback callback) + 28

System.Web.UI.WebControls.DataBoundControl.PerformSelect () + 274

System.Web.UI.WebControls.ListView.PerformSelect () + 124

System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound () + 105

System.Web.UI.WebControls.ListView.CreateChildControls () + 78

System.Web.UI.Control.EnsureChildControls () + 182

System.Web.UI.Control.PreRenderRecursiveInternal () + 60

System.Web.UI.Control.PreRenderRecursiveInternal () + 222

System.Web.UI.Control.PreRenderRecursiveInternal () + 222

System.Web.UI.Control.PreRenderRecursiveInternal () + 222

System.Web.UI.Control.PreRenderRecursiveInternal () + 222

Система.Web.UI.Control.PreRenderRecursiveInternal () + 222

System.Web.UI.Control.PreRenderRecursiveInternal () + 222

System.Web.UI.Control.PreRenderRecursiveInternal () + 222

System.Web.UI.Control.PreRenderRecursiveInternal () + 222

System.Web.UI.Control.PreRenderRecursiveInternal () + 222

System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 4185

Информация о версии: Microsoft .NET Framework Версия: 4.0.30319;ASP.NET версия: 4.0.30319.1

1 Ответ

0 голосов
/ 22 февраля 2011

Мои предложения:

  • Найти, происходит ли это на случайной или конкретной странице
  • Попробуйте выяснить, сколько пользователей обращаются к вашему веб-приложению, когда это происходит (счетчики производительности)
  • Мониторинг SQL-сервера - производительность, чтение, а также проверка длительных транзакций, которые могут блокировать чтение другими пользователями
  • В своей разработке разработчик проверяет, сколько записей возвращает ваш EntityDataSource - особенно, если вы используете встроенный пейджинг.
...