У мене є багато користувачів на моєму веб-сайті (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.TdsParser.Run (RunBehavior runBehavior , SqlCommand cmdHandler, SqlDataReader DATASTREAM, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1363
System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader Д.С., RunBehavior runBehavior, String resetOptionsString) +6387741
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, метод StringName, булевий sendToPipe) +689
System.Data.SqlClient.SqlCommand.ExecuteNiaTataNaQaek (
NQQeek (NQ ) NQQeek (NQQQ), , Int32 та рядкиAffected) +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.RegisterEventSubscriptionsWithIttpіntіntіxtіntіxtіntіntіntіtіntіtіntіtіntіtіntіtіntіntіntіtіntіtіtіntіtіntіtіntіtіtіntіtіntіtіntіtіntіtіntіеntіtіеntеrееs, InitSpecial (HttpApplicationState стану, MethodInfo [] обробники, IntPtr, HttpContext контекст додаток контекст) : +352
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr контекст додаток, HttpContext контекст) +407
System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr контекст додаток) +375[HttpException (0x80004005): Час очікування минув. Період часу очікування, який минув до завершення операції, або сервер не відповідає.
Ствердження було припинено.
РЕДАКТУЙТЕ ПІСЛЯ ВІДПОВІДІВ:
my Application_Start
in 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 я скидаю всі Інтернет-користувачі на Application_Start
. У цій таблиці понад 482,751 записів.