Azure SQL数据库操作超时

时间:2016-01-31 07:37:42

标签: entity-framework azure timeout azure-sql-database

我有一个共享的托管网站" production"这很有效。它有用户,到目前为止我没有问题。

我决定创建一个测试环境。我创建了另一个Azure应用,并复制了我的"生产"站点到这个测试站点。这发生在今天。它没有用户。我创建了一个数据库,我同意每月支付5美元。所以这不是一个免费帐户。我上传了我的种子数据,其中一部分是40K行的邮政编码。没有问题,这很好。

但是,当我使用该网站时,我始终获得timeout error。我可以向你保证,这不是因为使用。我在连接字符串中将超时从30增加到90,但这并没有什么不同。生产和测试之间没有代码差异。

我已经阅读过很多关于此的帖子,但没有人帮忙。以下是一些示例:

post1 post2 post3 post4 post5 post6

有什么想法吗?

> [Win32Exception (0x80004005): The wait operation timed out]
> 
> [SqlException (0x80131904): Timeout expired.  The timeout period
> elapsed prior to completion of the operation or the server is not
> responding.  This failure occurred while attempting to connect to the
> routing destination. The duration spent while attempting to connect to
> the original server was - [Pre-Login] initialization=27; handshake=25;
> [Login] initialization=0; authentication=0; [Post-Login] complete=3; 
> ]    System.Data.SqlClient.SqlConnection.OnError(SqlException
> exception, Boolean breakConnection, Action1 wrapCloseInAction)
> +2418094    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
> exception, Boolean breakConnection, Action1 wrapCloseInAction)
> +5694436    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject
> stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +285   
> System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,
> SqlCommand cmdHandler, SqlDataReader dataStream,
> BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject
> stateObj, Boolean& dataReady) +3731   
> System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +58   
> System.Data.SqlClient.SqlDataReader.get_MetaData() +89   
> System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,
> RunBehavior runBehavior, String resetOptionsString) +379   
> System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean
> async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader
> ds, Boolean describeParameterEncryptionRequest) +2064   
> System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String
> method, TaskCompletionSource`1 completion, Int32 timeout, Task& task,
> Boolean asyncWrite) +375   
> System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String
> method) +53   
> System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior
> behavior, String method) +240   
> System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior
> behavior) +41   
> System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
> +12    System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand
> entityCommand, CommandBehavior behavior) +435

Usage Graph

2 个答案:

答案 0 :(得分:6)

这是DTU问题。我有5个DTU(S0)现在我有20个DTU(S1)。如果我拥有物理学权利,它就像蒸汽机和BTU。马力很重要。

答案 1 :(得分:1)

我得到了同样的错误但是在看了一点之后我发现的问题是不同的,如果它能帮助其他人,我想分享它。我有一个EntityFramework迁移,在本地开发服务器和登台服务器上运行良好,但生产时间太长。它导致超时,因为它不是迁移失败的异常,我们认为这不是问题。 在此迁移中,我们索引了一个包含数百万条记录的表,因此索引花费的时间更长,EF在部署导致问题时首次请求连接时进行迁移。

由于我的表中有可以重新生成的数据(对于保留一些摘要数据没什么关键),我快速清空表并运行迁移。之后一切都很好。