Таймаут истек. До завершения операции истек период тайм-аута или сервер не отвечает. Операция была завершена

У меня много пользователей на моем веб-сайте (20000-60000 в день), который является сайтом для загрузки мобильных файлов. У меня есть удаленный доступ к моему серверу (windows server 2008-R2).
Раньше я получал "Сервер недоступен" ошибки, но теперь я вижу ошибку таймаута соединения.
Я не знаком с этим - почему это происходит и как я могу это исправить?

Полная версия ошибки приведена ниже:

Server Error in '/' Application. Таймаут истек. Период тайм-аута истек до завершения операции или сервер не отвечает. Операция была завершена. Описание: необработанное исключение произошло во время выполнения текущего веб-запроса запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об этой об ошибке и о том, где она возникла в коде.

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

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

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

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

[SqlException (0x80131904): Таймаут истек. Период тайм-аута истек до завершения операции или сервер не отвечает. Операция была завершена]
. System.Data.SqlClient.SqlConnection.OnError(SqlException exception, 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.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6387741
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +6389442
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +538
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +689
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +327
NovinMedia.Data.DbObject.RunProcedure(String storedProcName, IDataParameter[] parameters, Int32& rowsAffected) +209
DataLayer.OnlineUsers.Update_SessionEnd_And_Online(Object Session_End, Boolean Online) +440
NiceFileExplorer.Global.Application_Start(Object sender, EventArgs e) +163

[HttpException (0x80004005): Таймаут истек. Период тайм-аута истек до завершения операции или сервер не отвечает. Операция была завершена]
. System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +4052053
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +191
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +352
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +407
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +375

[HttpException (0x80004005): Таймаут истек. Период тайм-аута истек до завершения операции или сервер не отвечает. Операция была завершена]
. System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11686928 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4863749


EDIT AFTER ANSWERS:
мой 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

У меня есть два метода для получения онлайн пользователей:

  1. используя Application["OnlineUsers"] = 0;
  2. другой метод использует базу данных

Итак, для метода #2 я сбрасываю всех OnlineUsers в Application_Start. В этой таблице более 482 751 записи.

279
задан Muhammad Ashikuzzaman 16 January 2019 в 19:42
поделиться