Azure SQL a častý time-out   zodpovězená otázka

SQL, Azure

Od nedávné plánované údržby, kterou Microsoft oznámil se nám stává (téměř po každém pauze větší než cca 10 minut), že první dotaz do Azure SQL spadne na chybě:Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.


[InvalidOperationException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.]
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +6711773
   System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +6712291
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +152
   System.Data.SqlClient.SqlConnection.Open() +229
   System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +102

[EntityException: The underlying provider failed on Open.]
   System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) +11454167
   System.Data.EntityClient.EntityConnection.Open() +142
   System.Data.Objects.ObjectContext.EnsureConnection() +97

Zřejmě máme někde chybu v nastavení time-outu (nastavujeme ho na 30s), ale i tak je divné, že by trvalo pokaždé databázi tak dlouho, než se spojí.

Nemáte s tím někdo zkušenost? V tomto případě to je téměř nenasaditelné na ostrý web.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Oni mohou na pozadí tu databázi přemigrovávat na jiné servery, a nebo je to způsobené tím, že connection pool si drží otevřené spojení, které časem vyhnije.

V cloudu musíte mít VŽDY implementovanou nějakou retry logiku - když se spojení do 2 sekund nepodaří, zkusit to znovu.

Poslední verze Entity Frameworku to umí pomocí connection resiliency strategy - http://msdn.microsoft.com/en-US/data/dn4....

Nad čistým SqlClient a SqlConnection je pak implementace třeba tady - nezkoušel jsem, ale snad se toho na tom nedá moc pokazit. https://www.nuget.org/packages/Transient...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback