5

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

对于缓存客户端,我可以遵循任何最佳实践吗?

4

1 回答 1

8

这与这个问题非常相似:为什么与 Azure Redis 缓存的连接如此之高?

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

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