Časté zobrazování stavu "Připojování" a následně "Naposledy synchronizováno" během synchronizace eWay-CRM

Popis

V lokálním logu může být zobrazeno při DebugLevel = 0 (v registrech) následující:

HASH: F3F522677A9CD9FC62C1519CD54FF849
Synchronization failed
eWay.Core.Exceptions.InternetConnectionException: The operation has timed out ---> System.Net.WebException: The operation has timed out
at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at eWay.Core.eWayWS.eWayWS.LogIn(String UserName, String PasswordHash, String ClientVersion, String ClientID)
at eWay.Core.WebService.Connection.LogIn()
at eWay.Core.WSDataInterface.eWayWSConnection.LogIn()
at eWay.Core.WebService.Connection.get_SID()
at eWay.Core.WSDataInterface.eWayItemStore.b__18()
at eWay.Core.WebService.BasicItemStore.CallWebServiceMethod[TResult](WebServiceMethodDelegate`1 method, Boolean supressAfterReLoginEventHandler)
at eWay.Core.WebService.BasicItemStore.CallWebServiceMethod[TResult](WebServiceMethodDelegate`1 method)
at eWay.Core.WSDataInterface.eWayItemStore.CallWebServiceMethod[TResult](WebServiceMethodDelegate`1 method)
at eWay.Core.WSDataInterface.eWayItemStore.GetItemsLastChange(DateTime& lastChange)
--- End of inner exception stack trace ---
at eWay.Core.WSDataInterface.eWayItemStore.GetItemsLastChange(DateTime& lastChange)
at eWay.Core.CachedDataInterface.CachedItemStore.GetItemsLastChange(DateTime& lastChange)
at eWay.StandardEdition.Synchronization.SynchronizeThread.TryGetItemsLastChange(DateTime& lastChange, Int64& lastChangeId)
--- END TRACE ---

Na serveru je zalogováno:

[12] ERROR w3wp [(null)] - Operation time-out
System.Data.SqlClient.SqlException: Vypršel časový limit. Časový limit vypršel před dokončením operace nebo server neodpovídá.
The statement has been terminated.
v System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
v System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
v System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
v System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
v System.Data.SqlClient.SqlDataReader.get_MetaData()
v System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
v System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
v System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
v System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
v System.Data.SqlClient.SqlCommand.ExecuteScalar()
v eWay.Core.Data.SynchronizedSqlCommand.<>c__DisplayClass1.b__0()
v eWay.Core.Data.SqlCommandRepeater.RunSqlCommand(SqlCommand command, SqlCommandDelegate sqlCommand)
v eWay.Core.Data.SynchronizedSqlCommand.ExecuteScalar()
v eWay.WebService.MSSQLDataInterface.WsSqlCommand.<>c__DisplayClass9.b__8()
v eWay.WebService.MSSQLDataInterface.WsSqlCommand.RunCommand(SqlCommandDelegate method)
2015-06-22 09:36:29,580 [12] ERROR w3wp [(null)] - Request processed with error response 'rcDatabaseTimeout'
eWay.WebService.Core.Exceptions.WebServiceInternalException: Operation time-out
v eWay.WebService.MSSQLDataInterface.WsSqlCommand.RunCommand(SqlCommandDelegate method)
v eWay.WebService.MSSQLDataInterface.WsSqlCommand.ExecuteScalar()
v eWay.WebService.ServiceLogic.Security.ClientSession.UpdateSession(Guid sid)
v eWay.WebService.ServiceLogic.Security.ClientSession..ctor(Guid sid, ItemStore itemStore)
v eWayWSImpala.eWayWS.GetItemsLastChange(Guid SID) 

Transakční log databáze se nevyprazdňuje a jeho velikost může mít i několik GB.

Verze

Všechny verze eWay-CRM

Obtížnost řešení

Střední

Postup řešení

Obsah:

Varianta 1: Velký transakční log

Aktivní zálohování

Je třeba zkontrolovat, že je aktivní zálohování eWay-CRM®. Aktivní zálohování se stará o to, že je během zálohování transakční log vyprazdňován.

Individuální řešení zálohy (neaktivní zálohování)

Pokud nechcete mít aktivní zálohování eWay-CRM®, protože si řešíte zálohy všech databází sami, je potřeba také vyřešit zálohu transakčních logů.

Pro tento účel je možné přenastavit Recovery model eWay-CRM® databáze z FULL na SIMPLE. Takové nastavení je možné provést ve vlastnostech databáze v Microsoft SQL Management Studio (viz obrázek).

Varianta 2: Kontrola počtu změn v tabulce EWD_ItemChanges

Tabulka slouží pro synchronizaci změn mezi klientskými aplikacemi. Tabulka by měla mít maximálně nižší statisíce záznamů.

SELECT COUNT(*) FROM EWD_ItemChanges

Starší verze nechávali v tabulce poslední 3 měsíce změn. Tabulku je možné promazat a nechat pouze poslední měsíc:

EXEC eWaySP_DeleteOldItemChanges 1

Varianta 3: Zkontrolovat, že databázi nebrzdí joby (eWayTimer)

Pomocí Activity Monitor v SQL Management Studio můžeme vidět aktivní procesy. Pokud se tam objevuje hodně aktivních dotazů u aplikace eWayTimer, je možné, že databázi brzdí pravidelné úlohy.

Zkuste eWayTimer vypnout (viz Jak zastavit webovou službu eWay-CRM a eWayTimer) a pozorujte, zda problém přetrvává.

Pokud to pomohlo, doporučujeme nastavit, aby v jednu chvíli běžel pouze jeden job: Ladění výkonu eWay-CRM na serveru