已达到Azure Redis缓存最大连接数

时间:2016-07-19 14:20:12

标签: c# azure caching redis azure-redis-cache

我使用Azure Redis缓存来存储一些快速查找数据,这个缓存由​​10个客户端应用程序读取/连接。所有应用程序都是用.NET 4.6编写的,这包括ASP.NET MVC Web应用程序,Web API以及每1秒运行一次的工作者角色。所有客户端都使用StackExchange.Redis连接到Cache。但是,我得到间歇性超时,我发现在Azure门户中,最大连接数已达到1000(对于我的定价层)。由于我只有10个客户端应用程序,而且这些应用程序都不是多线程的,因此可以创建与缓存的1000个连接?

我可以为缓存客户端提供哪些最佳实践?

1 个答案:

答案 0 :(得分:6)

这与此问题非常相似:Why are connections to Azure Redis Cache so high?

以下是我们为大多数客户推荐的最佳做法:

  1. 在连接字符串中将abortConnect设置为false
  2. 创建一个singleton connectionMultiplexer并重用它。这对于大多数情况都是足够的。某些高级方案可能需要为每个应用程序创建多个connectionMultiplexer对象,但大多数情况下只有一个很好。我建议遵循此处显示的编码模式:https://azure.microsoft.com/en-us/documentation/articles/cache-dotnet-how-to-use-azure-redis-cache/#connect-to-the-cache
  3. 让ConnectionMultiplexer处理重新连接 - 除非您已经彻底测试了代码,否则请不要自己动手。我见过的大多数连接泄漏都是因为人们正在重新创建connectionMultiplexer但却无法处理旧的连接。在大多数情况下,最好让多路复用器进行重新连接。