繁体   English   中英

Azure KeyVault 访问出现明显延迟

[英]Apparent delay in Azure KeyVault access

我们有一个基于 Azure 的 ASP.NET Web 服务,可以访问 Azure KeyVault。 我们看到两个实例,其中一个方法在第一次尝试时“挂起”,然后在一分钟左右之后工作。

在这两种情况下,都会发生 KeyVault 访问。 在这两种情况下,当我们开始在这些方法中使用 KeyVault 时,问题就开始了。

我们在第一个实例中进行了非常仔细的登录,并且在我们的代码中看不到任何其他可能导致挂起的内容。 KeyVault 访问是主要嫌疑人。

此外,如果我们从本地服务器(来自 Visual Studio)运行应用程序,KeyVault 访问在“第一次尝试”时运行良好。 它仅在 Azure 上的生产中运行时才会产生“挂起”错误,并且仅在“第一次尝试”时产生。

“挂起”是指在一个由外部 API 触发的实例中,至少需要 60 秒(我们可以看出这是因为外部 API 超时。)在另一个实例中,由页面请求触发,几分钟过去了,页面只是旋转,此时我们假设数据库请求或其他东西已经超时。

当我说“大约一分钟后”时,这与我们为重试计时一样快。

KeyVault 是否存在某种问题或功能需要在第一次尝试之前“预热”?

更新:我正在更仔细地查看代码,我看到至少有几个地方我们可以插入更多日志记录以更准确地了解故障发生的位置。 我会这样做,然后我会在这里报告。

更新:请参阅下面的答案 - 主要新手错误,已更正。

找到了问题,解决了。

需要从异步任务调用 Key Vault 访问,因为存在多秒延迟。

private async Task<string> GetKeyVaultSecretValue(varSecretParms) {

我不了解底层技术,但是,显然,如果调用来自标准代码序列,服务器不喜欢等待,因此线程被放弃/停止。

根据您的描述,似乎是 WebApp没有启用 Always on 的原因

默认情况下,如果 Web 应用程序闲置一段时间,就会卸载它们。 这让系统可以节省资源。 在基本或标准模式下,您可以启用 Always On 以保持应用程序始终加载

如果可能,请尝试启用始终开启并重试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM