내 웹 사이트 (하루 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 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 결과) +538
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult 결과, 문자열 methodName, 부울 sendToPipe) +689
System.Data.SqlClient.SqlCommand.ExecuteNonQuery () +327
NovinMedia.Data.DbObject.RunProcedure (String storedProcName, IDataParameter [] 매개 변수, Int32 및 rows 영향을 받음) +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 context, HttpApplication app) +4052053
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext, HttpContext context, MethodInfo [] handlers) +191
System.Web.HttpApplication. InitSpecial (HttpApplicationState 상태, MethodInfo [] 처리기, IntPtr appContext, HttpContext 컨텍스트) +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
ANSWERS AFTER 편집 :
내 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의 모든 온라인 사용자를에서 재설정했습니다 Application_Start
. 해당 테이블에 482,751 개가 넘는 레코드가 있습니다.