none
time-out connessioni al database RRS feed

  • Domanda


  • Buongiorno, mi succede questo:
    Quando un'applicazione utilizza il Microsoft.NET Framework 3.5 o provider di dati.NET Framework di Microsoft, 4 per Microsoft SQL Server (SQLClient) per connettersi a un database che contiene la sessione dell’ IIS , viene visualizzato il seguente messaggio di errore:
    Timeout scaduto. Il periodo di timeout è trascorso prima del completamento dell'operazione o il server non risponde.
    in System.Data.SqlClient.SqlInternalConnection.OnError (eccezione SqlException, Boolean breakConnection)
    in System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
    in System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, UInt32 errore)
    in System.Data.SqlClient.TdsParserStateObject.ReadSni (asyncResult DbAsyncResult, TdsParserStateObject stateObj)
    in System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
    in System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake (Boolean crittografare, Boolean trustServerCert, Boolean & marsCapable)
    in System.Data.SqlClient.TdsParser.Connect (ServerInfo serverInfo, connHandler SqlInternalConnectionTds, Boolean ignoreSniOpenTimeout, timerExpire di Int64, Boolean crittografare, Boolean trustServerCert, integratedSecurity booleano)
    in System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfo serverInfo, newPassword String, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, owningObject SqlConnection)
    in System.Data.SqlClient.SqlInternalConnectionTds.LoginWithFailover (Boolean useFailoverHost, ServerInfo primaryServerInfo, failoverHost stringa, newPassword String, Boolean redirectedUserInstance, owningObject SqlConnection, SqlConnectionString connectionOptions, timeout TimeoutTimer)
    Nota Se la proprietà ConnectionTimeout è impostata sul valore predefinito di 15 secondi, è possibile che venga visualizzato il messaggio di errore dopo la connessione è aperta per 1,2 secondi.

    Effettuando delle ricerche su google abbiamo trovato il seguente link sotto riportato ma che si riferisce a database con mirrroring:
    Il link di microsoft di riferimento è: https://support.microsoft.com/it-it/kb/2605597

    Abbiamo comunque effettuato le risoluzioni richieste da Microsoft (aggiornamento 4.5.2 del framework e portato il timeout a 150 sec e max pool size a 1024), ma senza esito.
    Il problema persiste e compare a cadenza oraria (precisamente ogni inizio di ora ovvero alle 9.00; 10.00; 11.00 ecc… E si autorisolve nel giro di qualche minuto. La cadenza è sempre la stessa ovvero all'inizio di ogni ora ma l'errore si crea in presenza di un numero di connessioni importanti, ovvero non si genera di notte e la mattina presto.

    Qualcuno ha avuto lo stesso problema?


    lunedì 2 maggio 2016 10:32

Risposte

  • Vi ringrazio per il vostro supporto, ma dopo settimane di difficoltà è stato capito l'inghippo...

    Il tutto era dovuto alle procedure di storage del fornitore dei servizi Cloud che rendevano instabile il sistema...

    Grazie a tutti per la collaborazione.

    mercoledì 4 maggio 2016 13:35

Tutte le risposte

  • c'è qualcosa di schedulato su quella istanza di sql o sul server in cui è installata ?

    Edoardo Benussi
    Microsoft MVP - Enterprise Mobility
    edo[at]mvps[dot]org


    lunedì 2 maggio 2016 10:37
    Moderatore
  • Niente.

    Tutti i servizi sono schedulati di notte.

    lunedì 2 maggio 2016 10:38
  • per questo sql server non è impostato alcun tipo di replica o di cluster ?

    viene scritto qualcosa nel registro eventi in concomitanza al verificarsi del time-out ?

    e nel log di sql ?


    Edoardo Benussi
    Microsoft MVP - Enterprise Mobility
    edo[at]mvps[dot]org


    lunedì 2 maggio 2016 14:20
    Moderatore
  • Una premessa: sono macchine virtualizzate con VMware.

    Non vi sono repliche o cluster.

    Nel registro eventi si ha il seguente log:

    Event code: 3005 
    Event message: An unhandled exception has occurred. 
    Event time: 5/2/2016 11:03:33 AM 
    Event time (UTC): 5/2/2016 9:03:33 AM 
    Event ID: 5f14b18c6a224b1381fecf6a3c0b493b 
    Event sequence: 30796 
    Event occurrence: 56 
    Event detail code: 0 
     
    Application information: 
        Application domain: /LM/W3SVC/4/ROOT-1-131066451421131964 
        Trust level: Full 
        Application Virtual Path: / 
        Application Path: C:\xxxxxx\ 
        Machine name: SANDIEGO2 
     
    Process information: 
        Process ID: 2932 
        Process name: w3wp.exe 
        Account name: SANDIEGO2\xxxxUser 
     
    Exception information: 
        Exception type: HttpException 
        Exception message: Unable to connect to SQL Server session database.
       at System.Web.SessionState.SqlSessionStateStore.SqlExecuteReaderWithRetry(SqlCommand cmd, CommandBehavior cmdBehavior)
       at System.Web.SessionState.SqlSessionStateStore.DoGet(HttpContext context, String id, Boolean getExclusive, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags)
       at System.Web.SessionState.SqlSessionStateStore.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags)
       at System.Web.SessionState.SessionStateModule.GetSessionStateItem()
       at System.Web.SessionState.SessionStateModule.PollLockedSessionCallback(Object state)

    Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
       at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
       at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
       at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
       at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
       at System.Data.SqlClient.SqlDataReader.get_MetaData()
       at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
       at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
       at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
       at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
       at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
       at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
       at System.Web.SessionState.SqlSessionStateStore.SqlExecuteReaderWithRetry(SqlCommand cmd, CommandBehavior cmdBehavior)

    The wait operation timed out

    Request information: 
        Request URL: https://acc.xxxx.it:443/Services/NotificheAjax.asmx/CheckNotifiche 
        Request path: /Services/NotificheAjax.asmx/CheckNotifiche 
        User host address: 192.168.1.1 
        User: xxxxx 
        Is authenticated: True 
        Authentication Type: Forms 
        Thread account name: SANDIEGO2\xxxxUser 
     
    Thread information: 
        Thread ID: 123 
        Thread account name: SANDIEGO2\xxxxUser 
        Is impersonating: False 
        Stack trace:    at System.Web.SessionState.SqlSessionStateStore.SqlExecuteReaderWithRetry(SqlCommand cmd, CommandBehavior cmdBehavior)
       at System.Web.SessionState.SqlSessionStateStore.DoGet(HttpContext context, String id, Boolean getExclusive, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags)
       at System.Web.SessionState.SqlSessionStateStore.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags)
       at System.Web.SessionState.SessionStateModule.GetSessionStateItem()
       at System.Web.SessionState.SessionStateModule.PollLockedSessionCallback(Object state)

    Nel log sql non c'è niente.

    Grazie per l'aiuto!

    lunedì 2 maggio 2016 15:43
  • Quando si verifica il timeout riesci ad eseguire il ping della macchina virtuale che ospita SQL Server?

    Sei sicuro della correttezza del codice (cioè con altri server funziona correttamente anche in presenza di un alto numero di connessioni)? Ad esempio se è presente un errore nella chiusura delle connessioni si potrebbe trattare di un Connection Pool Overflow (a tal proposito può essere utile monitorare il numero di connessioni, puoi farlo anche con SQL Server Profiler).

    lunedì 2 maggio 2016 21:05
    Moderatore
  • Vi ringrazio per il vostro supporto, ma dopo settimane di difficoltà è stato capito l'inghippo...

    Il tutto era dovuto alle procedure di storage del fornitore dei servizi Cloud che rendevano instabile il sistema...

    Grazie a tutti per la collaborazione.

    mercoledì 4 maggio 2016 13:35