在我们仍在开发的项目中,我们注意到访问 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/