Истощение потоков StackExchange Redis в распределенном. net основном приложении - PullRequest
0 голосов
/ 17 июня 2020

У нас есть базовое веб-приложение. net, работающее на 2 виртуальных машинах за балансировщиком нагрузки, которое использует Azure кэш для Redis для хранения сеансов.

При выполнении нагрузочного тестирования у нас возникают таймауты для вызовов redis для получения сеансов. Когда это происходит, у нас возникает каскад проблем из-за других вызовов (БД, веб-службы), которые также истекли по таймауту, вероятно, ожидая потоков.

Я прочитал FAQ по таймауту, и мы попробовали все исправления. Мы всегда вызываем "await session.LoadAsyn c ();" перед вызовом сеанса, поэтому он должен быть asyn c.

После увеличения минимального числа пулов потоков тайм-аутов больше нет, однако у нас есть эффект снежного кома, когда вызовы redis становятся медленнее и медленнее, пока время отклика не достигнет 8 ~ секунд за пару минут.

Мы запускаем довольно маленькие экземпляры ВМ, B2ms с 2 процессорами и 8 ГБ ОЗУ. Может ли это быть причиной длительного времени ответа?

Как я сказал выше, тайм-ауты исчезли с момента увеличения минимального количества потоков, но у нас все еще есть медленное время отклика под нагрузкой, и нам нечего попробовать, кроме собирается для более крупных экземпляров ВМ.

Любая помощь приветствуется.

...