モバイルファイルのダウンロードサイトであるWebサイト(1日あたり20000〜60000)に多くのユーザーがいます。私のサーバー(windowsサーバー2008-R2)にリモートアクセスできます。以前に「サーバーが利用できません」というエラー
を受け取りましたが、接続タイムアウトエラーが表示されます。
私はこれに精通していません-なぜそれが発生し、どうすれば修正できますか?
完全なエラーは以下のとおりです。
「/」アプリケーションでのサーバーエラー。タイムアウトになりました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。ステートメントは終了されました。説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細と、コードのどこで発生したかについては、スタックトレースを確認してください。
例外の詳細:System.Data.SqlClient.SqlException:タイムアウトの期限が切れました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。ステートメントは終了されました。
ソースエラー:
現在のWeb要求の実行中に未処理の例外が生成されました。例外の発生源と場所に関する情報は、以下の例外スタックトレースを使用して識別できます。
スタックトレース:
[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 runBehavior runBehavior runBehavior runBehavior 538 327 NovinMedia.Data.DbObject.RunProcedure(String storedProcName、IDataParameter []パラメータ、Int32&rowsAffected)+209 DataLayer.OnlineUsers.Update_SessionEnd_And_Online(Object Session_End、Boolean Online)+440
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result、String methodName、Boolean sendToPipe)+689
System.Data.SqlClient.SqlCommand.ExecuteNonQuery()+
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 []ハンドラー)+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
応答した後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
オンラインユーザーを獲得するには2つの方法があります。
- を使用して
Application["OnlineUsers"] = 0;
- データベースを使用する他の1つ
したがって、メソッド#2では、すべてのOnlineUsersをでリセットしApplication_Start
ます。そのテーブルには482,751を超えるレコードがあります。