Производственная среда находится в Azure с использованием Redis Cache Standard 2.5GB
.
Пример 1
System.Web.HttpUnhandledException (0x80004005): возникло исключение типа «System.Web.HttpUnhandledException». ---> StackExchange.Redis.RedisTimeoutException: тайм-аут выполнения SETNX User.313123, inst: 49, mgr: Inactive, err: never, queue: 0, qu: 0, qs: 0, qc: 0, wr: 0, wq : 0, in: 0, ar: 0, clientName: PRD-VM-WEB-2, serverEndpoint: Unspecified / Construct3.redis.cache.windows.net: 6380, keyHashSlot: 15649, IOCP: (Busy = 0, Free = 1000, Мин = 1, Макс = 1000), РАБОЧИЙ: (Занят = 1, Свободен = 32766, Мин = 1, Макс = 32767) (Прочтите эту статью, чтобы узнать о некоторых типичных проблемах на стороне клиента, которые могут вызывать тайм-ауты: http://stackexchange.github.io/StackExchange.Redis/Timeouts) на StackExchange. Redis.ConnectionMultiplexer.ExecuteSyncImpl [T] (сообщение сообщения, процессор ResultProcessor
1 processor, ServerEndPoint server) in c:\code\StackExchange.Redis\StackExchange.Redis\StackExchange\Redis\ConnectionMultiplexer.cs:line 2120 at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor
1, сервер ServerEndPoint) в c: \ code \ StackExchange.Redis \ StackExchange.Redis \ StackExchange \ Redis \ RedisBase.cs: строка 81
Пример 2
StackExchange.Redis.RedisTimeoutException: Тайм-аут выполнения GET ForumTopic.33831, inst: 1, mgr: Inactive, err: never, queue: 2, qu: 0, qs: 2, qc: 0, wr: 0, wq: 0, in : 0, ar: 0, clientName: PRD-VM-WEB-2, serverEndpoint: Unspecified / Construct3.redis.cache.windows.net: 6380, keyHashSlot: 5851, IOCP: (Busy = 0, Free = 1000, Min = 1, Макс = 1000), РАБОЧИЙ: (Занят = 1, Свободен = 32766, Мин = 1, Макс = 32767) (Прочтите эту статью, чтобы узнать о некоторых типичных проблемах на стороне клиента, которые могут вызывать тайм-ауты: http://stackexchange.github.io/StackExchange.Redis/Timeouts) в StackExchange.Redis.ConnectionMultiplexer. ExecuteSyncImpl [T] (сообщение сообщения, процессор ResultProcessor
1 processor, ServerEndPoint server) in c:\code\StackExchange.Redis\StackExchange.Redis\StackExchange\Redis\ConnectionMultiplexer.cs:line 2120 at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor
1, сервер ServerEndPoint) в c: \ code \ StackExchange.Redis \ StackExchange.Redis \ StackExchange \ Redis \ RedisBase.cs: строка 81 в StackExchange.Redis.RedisDatabase.StringGet (RedisK CommandFlags flags) в c: \ code \ StackExchange.Redis \ Sta ckExchange.Redis \ StackExchange \ Redis \ RedisDatabase.cs: строка 1647 в C3.Code.Controls.Application.Caching.Distributed.DistributedCacheController.Get [T] (String cacheKey) в C: \ Construct.net \ Source \ C3Alpha2 \ Code \ Controls \ Application \ Caching \ Distributed \ DistributedCacheController.cs: строка 115 в C3.Code.Controls.Application.Caching.Manager.Manager.Get [T] (строковый ключ, Func`1 getFromExternFunction, логическое skipLocalCaches) в C: \ Construct.net \ Source \ C3Alpha2 \ Code \ Controls \ Application \ Caching \ Manager \ Manager.cs: строка 159 в C3.PageControls.Forums.TopicRender.Page_Load (отправитель объекта, EventArgs e) в C: \ Construct.net \ Source \ C3Alpha2 \ PageControls \ Forums \ TopicRender.ascx.cs: строка 40 в System.Web.UI.Control.OnLoad (EventArgs e) в System.Web.UI.Control.LoadRecursive () в System.Web.UI.Control. LoadRecursive () в System.Web.UI.Control.LoadRecursive () в System.Web.UI.Control.LoadRecursive () в System.Web.UI.Control.LoadRecursive () в Syste m.Web.UI.Control.LoadRecursive () в System.Web.UI.Control.LoadRecursive () в System.Web.UI.Page.ProcessRequestMain (логическое includeStagesBeforeAsyncPoint, логическое includeStagesAfterAsyncPoint)
Эти ошибки случаются спорадически, по несколько раз в день.
Это ошибка сети Azure или что-то, что я могу уменьшить? Глядя на цифры в ошибке, нет ничего необычного, и нагрузка на сервер никогда не превышает 7%, как сообщает Azure.
Подключение Redis
internal static class RedisController
{
private static readonly object GetConnectionLock = new object();
public static ConnectionMultiplexer GetConnection()
{
if (Global.RedisConnection == null)
{
lock (GetConnectionLock)
{
if (Global.RedisConnection == null)
{
Global.RedisConnection = ConnectionMultiplexer.Connect(
Settings.Deployment.RedisConnectionString);
}
}
}
return Global.RedisConnection;
}
xxxxxxx.redis.cache.windows.net:6380,password=xxxxxx=,ssl=True,abortConnect=False,allowAdmin=True
. У нас есть две виртуальные машины в Azure, на которых запущено веб-приложение, использующее Redis. Мы используем StackExchange.Redis 2.0.513. Любая помощь очень ценится, мы на этом закончили. Мы изменилиApplication_Start ThreadPool.SetMinThreads(10, 10)
по умолчанию, но, похоже, это не повлияло. - person Tom Gullen   schedule 28.11.2018