Сообщение об исключении: Тайм-аут выполнения GET allBots, inst: 1, mgr: Inactive, err: never, queue: 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: 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 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: (Занят = 3, Свободен = 997, Мин = 1, Макс = 1000), РАБОЧИЙ: (Занят = 3, Свободен = 2044, Мин = 1, Макс = 2047)
Я использую StackExchange.Redis версии 1.1.603 и самый маленький из доступных экземпляров Azure. Я получаю много ошибок времени ожидания GET / SET. У меня нет этой проблемы при локальной работе с сервером Redis на моем компьютере, что заставляет меня полагать, что проблема связана с Azure. Размер информации, хранящейся в Redis, составляет от 2 до 10 КБ.
На портале Azure я вижу количество подключений меньше 20, использование памяти около 130 мегабайт, использование процессора ниже 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) 700ко (здесь нужно работать, но ограничено ‹100 записей)
4.5) 5ko (30%)
4.6) 66ko (40%)