azure - 不可能在没有任何 SQL 错误的情况下进行完美的 Azure VIP 交换

标签 azure

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

System.Data.Entity.Core.EntityCommandExecutionException:执行命令定义时发生错误。有关详细信息,请参阅内部异常。 ---> System.Data.SqlClient.SqlException: 从服务器接收结果时发生传输级错误。 (提供者:Session Provider,错误:19 - 物理连接不可用)

我正在使用SqlAzureExecutionStrategy。此外,VIP 交换期间的其他请求似乎需要大约 30 秒的时间,导致网站实际上没有响应,尽管登台环境已经完全预热。

  • 有什么办法可以防止这种情况发生吗?
  • 为什么我没有读到太多关于这种行为的内容?其他人是否只是不关心一些损坏的请求和缓慢的 30 秒时间范围,或者我在 Sql/EF 设置中遗漏了一些重要的东西?

最佳答案

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

您需要做的是意识到这种情况将会发生并围绕它进行设计。强大的开发运营团队确实在这里大放异彩。我个人做的就是在不同地域进行分阶段部署。当我升级东海岸时,我会让流量管理器将所有流量指向西海岸的网络服务器。然后我将所有流量指向东海岸,同时更新西海岸。然后我将流量管理恢复正常。

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

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

关于azure - 不可能在没有任何 SQL 错误的情况下进行完美的 Azure VIP 交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27342642/

相关文章:

azure - 将 2GB 文件上传到 Azure blob

Azure VM 未启动

azure - 我创建了一个 Azure 应用程序来使用 Graph,但不断弹出错误消息 "Approval required"

Azure DevOps - 在 Azure YAML 管道的 React 构建中将文件夹拖放到空

azure - 如何读取自定义配置设置?

azure - MSTest 无法从网络共享加载 dll

azure - 将部门包含在 claim list 中

sql - 如何在 SQL 中为具有多个关系的相关地址创建新的标识符?

java - Azure函数:Java How to accept content-type of application/xml then convert it to a POJO

asp.net-mvc - Azure .Net Framework 4.8 向后兼容性