无法在没有任何SQL错误的情况下进行完美的Azure VIP交换

时间:2014-12-07 12:37:37

标签: azure

当网站被少量+5用户使用并且我进行VIP交换时,我总是得到SQL错误,例如:

System.Data.Entity.Core.EntityCommandExecutionException: An error occurred while executing the command definition. See the inner exception for details. ---> System.Data.SqlClient.SqlException: A transport-level error has occurred when receiving results from the server. (provider: Session Provider, error: 19 - Physical connection is not usable)

我正在使用SqlAzureExecutionStrategy。 VIP交换期间的其他请求似乎需要大约30秒才能使网站真正无响应,尽管已经完全预热了暂存环境。

  • 有什么方法可以阻止这种情况吗?
  • 为什么我不读这个行为呢?其他人只是不关心一些破损的请求和30秒的缓慢时间,或者我错过了我的Sql / EF设置中必不可少的东西?

2 个答案:

答案 0 :(得分:2)

当网站积极投入生产时,您实际上是在交换实时代码。你肯定会遇到各种各样的错误。在服务不存在的情况下,总会有一瞬间。部署新的sql架构时也是如此。

你需要做的是意识到这将会发生并围绕它进行设计。一个强大的开发团队真的很棒。我个人所做的是在不同地区进行分阶段部署。当我升级东海岸时,我会让交通管理员将所有流量指向西海岸网络服务器。然后在更新西海岸的时候把所有的交通指向东海岸。然后我将流量管理设置恢复正​​常。

要从东向西分配流量,通常会使用流量管理器设置单个端点,流量管理器将幕后指向正确的端点,就像代理一样。只需删除您要升级的端点,这将强制重定向到实际站点。升级完成后,重新添加端点。

您还应确保代码能够很好地处理错误。例如,如果需要与外部系统同步,并且在升级期间将单个记录输入到系统而不是外部,则可以使用您的数据重建外部系统的状态,反之亦然。

答案 1 :(得分:1)

我终于采取步骤切换到Azure Web Apps 而不是云服务,所有这些问题都已解决,甚至更多。

花了几天的时间,但绝对值得切换。

为意外离开暂存服务器付费也是过去的问题。