408 Stimmen

Die Zeitüberschreitung ist abgelaufen. Die Timeout-Periode ist abgelaufen, bevor der Vorgang abgeschlossen wurde, oder der Server antwortet nicht. Die Anweisung wurde abgebrochen

Ich habe viele Nutzer auf meiner Website (20000-60000 pro Tag), die eine Download-Site für mobile Dateien ist. Ich habe Fernzugriff auf meinen Server (Windows Server 2008-R2).
Ich habe erhalten "Server ist nicht verfügbar" Fehler, aber jetzt erhalte ich einen Timeout-Fehler für die Verbindung.
Ich bin mit diesem Problem nicht vertraut - warum tritt es auf und wie kann ich es beheben?

Der vollständige Fehler ist unten aufgeführt:

Serverfehler in der Anwendung '/'. Zeitüberschreitung abgelaufen. Der Timeout-Zeitraum ist abgelaufen, bevor der Vorgang abgeschlossen wurde, oder der Server reagiert nicht. antwortet. Die Anweisung wurde abgebrochen. Beschreibung: Eine unbehandelte Ausnahme ist während der Ausführung der aktuellen Webanforderung Anfrage. Bitte überprüfen Sie den Stack-Trace für weitere Informationen über den Fehler und dessen Ursprung im Code.

Details zur Ausnahme: System.Data.SqlClient.SqlException: Zeitüberschreitung abgelaufen. Die Timeout-Periode ist abgelaufen, bevor die Ausführung der Operation oder der Server antwortet nicht. Die Anweisung wurde abgebrochen.

Fehlerquelle:

Eine unbehandelte Ausnahme wurde während der Ausführung des Befehls aktuellen Web-Anfrage erzeugt. Informationen über den Ursprung und den Ort der der Ausnahme können anhand der nachstehenden Stapelverfolgung der Ausnahme ermittelt werden.

Stack Trace:

[SqlException (0x80131904): Zeitüberschreitung abgelaufen. Die Timeout-Periode ist abgelaufen, bevor der Vorgang abgeschlossen wurde, oder der Server antwortet. Die Anweisung wurde abgebrochen].
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): Die Zeitüberschreitung ist abgelaufen. Die Timeout-Periode abgelaufen, bevor der Vorgang abgeschlossen wurde, oder der Server reagiert nicht antwortet. Die Anweisung wurde abgebrochen].
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): Die Zeitüberschreitung ist abgelaufen. Die Timeout-Zeit ist vor dem Abschluss des Vorgangs abgelaufen, oder der Server ist nicht antwortet. Die Anweisung wurde abgebrochen].
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11686928 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4863749


NACH ANTWORTEN BEARBEITEN:
meine Application_Start en Global.asax ist wie unten:

protected void Application_Start(object sender, EventArgs e)
{
    Application["OnlineUsers"] = 0;

    OnlineUsers.Update_SessionEnd_And_Online(
        DateTime.Now,
        false);

    AddTask("DoStuff", 10);
}

Die gespeicherte Prozedur, die aufgerufen wird, ist:

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

Ich habe zwei Methoden, um Online-Nutzer zu gewinnen:

  1. mit Application["OnlineUsers"] = 0;
  2. die andere über die Datenbank

Für Methode #2 habe ich also alle OnlineUsers auf Application_Start . Die Tabelle enthält über 482.751 Datensätze.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X