【发布时间】:2018-11-26 19:38:22
【问题描述】:
我们有一个基于 Azure 的 ASP.NET Web 服务,它可以访问 Azure KeyVault。我们看到两个实例,其中一个方法在第一次尝试时“挂起”,然后在一分钟左右后工作。
在这两种情况下,都会发生 KeyVault 访问。在这两种情况下,当我们开始在这些方法中使用 KeyVault 时,问题就开始了。
我们在第一个实例中进行了非常仔细的日志记录,并且在我们的代码中看不到任何其他可能导致挂起的内容。 KeyVault 访问是主要嫌疑人。
此外,如果我们从本地服务器(从 Visual Studio)运行应用程序,则 KeyVault 访问在“第一次尝试”时工作正常。它只会在 Azure 上的生产环境中运行时产生“挂起”错误,并且只会在“第一次尝试”时产生。
我所说的“挂起”是指在一个由外部 API 触发的实例中,它至少需要 60 秒(我们可以看出这是因为外部 API 超时。)在另一个实例中,由一个页面请求,几分钟后页面就会旋转,此时我们假设数据库请求或其他东西已经超时。
当我说“一分钟左右”时,这与我们确定重试时间一样快。
是否存在某种问题或功能,KeyVault 在第一次尝试之前需要“预热”?
更新:我正在更仔细地查看代码,并且我看到至少有几个地方可以插入更多日志记录,以便更准确地了解故障发生的位置。我会这样做,然后我会在这里报告。
更新:请参阅下面的答案 - 主要新手错误,已更正。
【问题讨论】:
-
你能分享导致问题的代码吗?您还在使用托管标识连接到密钥保管库吗?
-
在您的评论提示下,我正准备分享 sn-ps,并看到了进行更多日志记录的方法。我要先试试。交互 => 更智能的操作。
标签: c# asp.net azure azure-keyvault