У меня много пользователей на моем веб-сайте (20000-60000 в день), который является сайтом загрузки для мобильных файлов. У меня есть удаленный доступ к моему серверу (Windows Server 2008-R2).
Ранее я получал сообщения об ошибке «Сервер недоступен» , но теперь я вижу ошибку тайм-аута соединения.
Я не знаком с этим - почему это происходит и как я могу это исправить?
Полная ошибка ниже:
Ошибка сервера в приложении '/' Тайм-аут истек. Время ожидания истекло до завершения операции, или сервер не отвечает. Заявление было прекращено. Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Data.SqlClient.SqlException: истекло время ожидания. Время ожидания истекло до завершения операции, или сервер не отвечает. Заявление было прекращено.
Ошибка источника:
Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информация о происхождении и местонахождении исключения может быть идентифицирована с помощью приведенной ниже трассировки стека исключений.
Трассировки стека:
[SqlException (0x80131904): истекло время ожидания. Время ожидания истекло до завершения операции, или сервер не отвечает. Оператор был прерван.]
System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое breakConnection) +404
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning () +412
System.Data.SqlClient.TiorB () , SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363
System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReegeSigning)
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева returnStream, булева асинхронный) +6389442
System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева returnStream, метод String, результат DbAsyncResult) + 538
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (результат DbAsyncResult, строковое имя-метода, логическое значение sendToPipe) +689
System.Data.SqlClient.SqlCommand.ExecuteNonQuery () +327
параметров- объекта- объекта- объекта- объекта- объекта- объекта- объекта- хранилища () , Int32 & rowActed) +209
DataLayer.OnlineUsers.Update_SessionEnd_And_Online (Object Session_End, Boolean Online) +440
NiceFileExplorer.Global.Application_Start (Отправитель объекта, EventArgs e) +163[HttpException (0x80004005): истекло время ожидания. Время ожидания истекло до завершения операции, или сервер не отвечает. Заявление было прекращено.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext контекст, HttpApplication приложение) +4052053
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr контекст приложения, HttpContext контекст, MethodInfo [] обработчики) +191
System.Web.HttpApplication. InitSpecial (состояние HttpApplicationState, обработчики MethodInfo [], appContext IntPtr, контекст HttpContext) +352
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance ( контекст appPter IntPt, контекст HttpContext) +407
Int.P.Intemp.Time[HttpException (0x80004005): истекло время ожидания. Время ожидания истекло до завершения операции, или сервер не отвечает. Оператор был прерван.]
System.Web.HttpRuntime.FirstRequestInit (контекст HttpContext) +11686928 System.Web.HttpRuntime.EnsureFirstRequestInit (контекст HttpContext) +141 System.Web.HttpRuntime.ProcessRequestWisWestWestWestWestWestWestWestWestWestWestWestWestWestWestWestWestWestWestWestWestWisWeb) WISE
EDIT ПОСЛЕ ОТВЕТЫ:
мой Application_Start
в Global.asax
это , как показано ниже:
protected void Application_Start(object sender, EventArgs e)
{
Application["OnlineUsers"] = 0;
OnlineUsers.Update_SessionEnd_And_Online(
DateTime.Now,
false);
AddTask("DoStuff", 10);
}
Вызываемая хранимая процедура:
ALTER Procedure [dbo].[sp_OnlineUsers_Update_SessionEnd_And_Online]
@Session_End datetime,
@Online bit
As
Begin
Update OnlineUsers
SET
[Session_End] = @Session_End,
[Online] = @Online
End
У меня есть два способа получить пользователей онлайн:
- с помощью
Application["OnlineUsers"] = 0;
- другой использует базу данных
Итак, для метода № 2 я сбросил все OnlineUsers в Application_Start
. В этой таблице более 482 751 записей.