异常消息:超时执行 GET allBots,inst:1,mgr:不活动,err:从不,队列:7,qu:0,qs:7,qc:0,wr:0,wq:0,in:65536,ar: 0,IOCP:(忙=2,空闲=998,最小=1,最大=1000),工人:(忙=0,空闲=2047,最小=1,最大=2047)
执行 GET stock_by_symbol_leg.to 超时,inst: 1, mgr: Inactive, err: never, queue: 13, qu: 0, qs: 13, qc: 0, wr: 0, wq: 0, in: 0, ar: 0 ,IOCP:(忙碌=3,空闲=997,最小=1,最大=1000),工作人员:(忙碌=3,空闲=2044,最小=1,最大=2047)
执行 GET stock_by_symbol_aapl 超时,inst:1,mgr:不活动,err:从不,队列:13,qu:0,qs:13,qc:0,wr:0,wq:0,in:0,ar:0,IOCP :(忙=3,空闲=997,最小=1,最大=1000),工人:(忙=3,空闲=2044,最小=1,最大=2047)
超时执行 GET portefoliosBotById_ec030000-0001-1200-0000-000000000000, inst: 1, mgr: Inactive, err: never, queue: 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: (Busy=3,Free=2044,Min=1,Max=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,密码=xxxxxxxx,ssl=True,abortConnect=False,connectRetry=5,connectTimeout=15000,synctimeout=15000"
3) 我创建了一个包含 10 个延迟加载 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%)