azure - 连接到 Azure 缓存服务大约需要 3.3 秒

标签 azure connection-pooling azure-caching

在我们仍在开发的项目中,我们注意到访问 ASP.NET Web API 服务时突然出现延迟。使用真棒Mini Profiler我们确定,这些延迟是由于与 Azure 数据缓存(预览版)服务的连接断开且必须重新建立时造成的。这个过程大约需要3.3秒。重新连接后,从缓存中获取对象需要 1.4 毫秒。

当我将 maxConnectionsToServer 从 1 增加到 20 时,我注意到另一件事。如果我在 1 或 2 分钟内没有向 Web API 发出请求(通常是连接断开时),然后开始进行调用,接下来的 20 个请求将延迟 3.3 秒,我猜这就是连接池的工作原理(回合-从池中断开连接)。

Web API 和缓存服务均托管在美国东部地区,我们已禁用本地缓存、禁用 SSL、启用自动发现。

所以,我想知道我们的配置是否有问题,或者这是因为 Azure 缓存仍处于预览阶段吗?

任何信息都将受到重视。

谢谢!

最佳答案

听起来您的共享缓存由于不活动而正在被卸载。测试此功能的一种方法是将角色内缓存添加到现有服务(如果可用)并将缓存使用量交换到此新缓存。角色内缓存描述here .

将缓存从共享产品中移出后,请等待必要的 1-2 分钟空闲超时,然后重试连接,不应出现延迟。

假设您在隔离问题后想坚持使用共享缓存选项,据我所知,当前唯一的解决方法是运行一个后台任务,该任务将定期 ping 缓存以使其保持事件状态。

如果您正在运行完整的 Web 角色,您可以在应用程序启动时启动后台任务。
如果您通过移动服务进行部署,则可以通过计划作业运行“ping”。您可能在这里遇到的唯一问题是计划作业的最短时间是 1 分钟,这可能不足以让您的缓存在 100% 的时间内保持事件状态。

关于azure - 连接到 Azure 缓存服务大约需要 3.3 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22349858/

相关文章:

Asp.net azure 共存缓存 session 状态设置?

azure - Visual Studio 未与 Microsoft Azure 连接以发布我的应用程序

azure - 如何在edX平台修改激活邮件内容?

Azure Bicep - 其他 IP 限制

postgresql - Node postgres : Setting max connection pool size

java - 在没有 JNDI 的情况下管理数据库连接的最佳方式

python - Mysql连接池问题: is it worth it?

azure - 无法加载文件或程序集 Microsoft.ApplicationServer.Caching.Core

c# - Azure Active Directory注销或清除 native 应用程序的 token 缓存

c# - Azure 缓存组策略