StackExchange.Redis自从连接到Azure Redis

时间:2016-07-28 21:10:02

标签: stackexchange.redis azure-redis-cache

  

异常消息:超时执行GET allBots,inst:1,mgr:   不活动,错误:从不,队列:7,qu:0,qs:7,qc:0,wr:0,wq:0,in:   65536,ar:0,IOCP :( Busy = 2,Free = 998,Min = 1,Max = 1000),WORKER:   (忙碌= 0,免= 2047,最小= 1,最大值= 2047)

     

超时执行GET stock_by_symbol_leg.to,inst:1,mgr:   不活动,错误:从不,队列:13,qu:0,qs:13,qc:0,wr:0,wq:0,   in:0,ar:0,IOCP :( Busy = 3,Free = 997,Min = 1,Max = 1000),WORKER:   (忙= 3,免费= 2044,最小= 1,最大值= 2047)

     

超时执行GET stock_by_symbol_aapl,inst:1,mgr:无效,   错误:从不,队列:13,qu:0,qs:13,qc:0,wr:0,wq:0,in:0,ar:   0,IOCP :( Busy = 3,Free = 997,Min = 1,Max = 1000),WORKER:   (忙= 3,免费= 2044,最小= 1,最大值= 2047)

     

执行GET超时   portefoliosBotById_ec030000-0001-1200-0000-000000000000,inst:1,   mgr:不活动,错误:从不,队列:13,qu:0,qs:13,qc:0,wr:0,wq:   0,in:0,ar:0,IOCP :( Busy = 3,Free = 997,Min = 1,Max = 1000),WORKER:   (忙= 3,免费= 2044,最小= 1,最大值= 2047)

我正在使用StackExchange.Redis版本1.1.603和最小的Azure实例。我收到了很多GET / SET超时错误。当我在我的盒子上使用Redis服务器本地工作时,我没有这个问题,这让我倾向于在Azure上解决问题。存储在Redis中的信息大约为2kb到10kb。

在Azure门户上,我看到我的连接数低于20,内存使用量约为130meg,cpu使用率低于35%,Redis服务器负载总是低于13%。我没有从门户网站看到任何问题迹象。

我知道在哪里可以获得更多信息来解决这个问题吗?

修改

自我上次发帖以来,我改进了一些设置。

1)我从C0传递到Azure Redis的C1实例。

2)我将连接字符串更改为15秒超时。以下是它的外观:

boursexxxxxxx.windows.net:6380,password=xxxxxxxx,ssl=True,abortConnect=False,connectRetry=5,connectTimeout = 15000,synctimeout = 15000“

3)我创建了一个10个Lazy Loading ConnectionMultiplex池,我在每次调用时都在旋转。

private static readonly Lazy<ConnectionMultiplexer>[] lazyConnection;

//In the static constructor of my cache :

lock (lockPookRoundRobin)
{
                lazyConnection = new Lazy<ConnectionMultiplexer>[POOL_SIZE];
                var connectionStringCache = System.Configuration.ConfigurationManager.AppSettings["CacheConnectionString"];
                for (int i = 0; i < POOL_SIZE; i++)
                {
                    lazyConnection[i] = new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect(connectionStringCache));
                }
}

4)我减少了许多缓存的值。根据序列化的对象,我有:

4.1)1.25ko(5%)

4.2)0.154ko(5%)

4.3)26ko(20%)

4.4)700ko(这里我们需要处理,但它仅限于<100个条目)

4.5)5ko(30%)

4.6)66ko(40%)

2 个答案:

答案 0 :(得分:2)

看起来您的ThreadPool设置需要调整为described here

您可能还想查看这些文章,以及它们将帮助您了解人们在使用Redis时遇到的常见问题:

答案 1 :(得分:0)

对于正在阅读该帖子的每个人。我做了一些事情:

  • 如果您使用的是Entity Framework,请务必限制其数量 你在序列化过程中走得很深。
  • 压缩序列化字符串。
  • 使用C1而不是C0。
  • 添加大量遥测以查找频率 设置和从缓存中获取,优化繁重的场景。
  • 使用IIS上的内存缓存缓存Redis缓存。我做了很多事 虽然规模很小,但却因需要大量数据而释放压力。

在云端,Redis与Web服务不在同一台服务器上,增加了很多开销。