Кэширование Windows Azure при отладке - время ожидания запроса

У меня проблема при использовании Windows Azure Caching с эмулятором (то есть на локальном, а не на облачном).

Мои системные конфигурации:

  • Windows 8
  • Visual Studio 2012, обновление 1
  • Azure SDK и эмулятор 1.8
  • Windows Azure Caching 1.8.1
  • Веб-API
  • .NET 4.5

Проблема заключается в следующем: наш сервер использует (в роли) Windows Azure Caching для управления сеансами и т. Д. Как только сервер получает запросы от клиентов, он начинает взаимодействовать с Windows Azure Caching для установки / получения некоторых объектов (например, объектов сеанса). Затем возникает исключение "тайм-аут" (Microsoft.ApplicationServer.Caching.DataCacheException), и сервер перестает отвечать на запросы, показывая следующие сообщения в журнале вывода Visual Studio.

...
iisexpress.exe Error: 0 : ERROR: <DistributedCache.RoutingClient> 25cb6980-94c5-4e72-  adee-cd58defff7fe:SendMsgAndWait: Request TimedOut, msgId = 77

A first chance exception of type 'Microsoft.ApplicationServer.Caching.DataCacheException' occurred in Microsoft.ApplicationServer.Caching.Client.dll

'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\11.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll'
iisexpress.exe Error: 0 : The thread '<No Name>' (0x16d0) has exited with code 0 (0x0).

The thread '<No Name>' (0x1a00) has exited with code 0 (0x0).
The thread '<No Name>' (0x2298) has exited with code 0 (0x0).

ERROR: <DistributedCache.RoutingClient> e91ff46b-870c-4d83-8eef-6bdb718baab9:SendMsgAndWait: Request TimedOut, msgId = 78

iisexpress.exe Warning: 0 : Microsoft.WindowsAzure.ServiceRuntime Verbose: 500 : Role instance status check starting

Microsoft.WindowsAzure.ServiceRuntime Verbose: 502 : Role instance status check succeeded: Ready

WARNING: <SimpleSendReceiveModule> DeadServerCallback Called, Server URI: [net.tcp://127.255.0.0:20004], Underlying exception - 

A first chance exception of type 'Microsoft.ApplicationServer.Caching.DataCacheException' occurred in Microsoft.ApplicationServer.Caching.Client.dll

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> DeadServerCallback Called, Server URI: [net.tcp://127.255.0.0:20004], Underlying exception - 

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> DeadServerCallback: Matches My Server, Cleaning Pending Requests

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> 48c1dd7f-f54d-40a8-9990-25af48b91eb1:Request - 79, result - Status=SendFailed[System.Net.Sockets.SocketException (0x80004005): An existing connection was forcibly closed by the remote host

   at System.Net.Sockets.Socket.Send(IList`1 buffers)

   at Microsoft.ApplicationServer.Caching.TcpSocketChannel.Send(IList`1 buffers, TimeSpan timeout)]

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> DeadServerCallback: Matches My Server, Cleaning Pending Requests

A first chance exception of type 'Microsoft.ApplicationServer.Caching.DataCacheException' occurred in Microsoft.ApplicationServer.Caching.Client.dll

iisexpress.exe Warning: 0 : WARNING: <DistributedCache.SocketClientChannel.1> Request 81 to host net.tcp://127.255.0.0:20004/ failed Status=ChannelOpening

iisexpress.exe Warning: 0 : WARNING: <DistributedCache.SocketClientChannel.1> Request 80 to host net.tcp://127.255.0.0:20004/ failed Status=ChannelOpening

iisexpress.exe Warning: 0 : WARNING: <SimpleSendReceiveModule> 8ec8ff74-1f04-49da-8ff5-529d0697542f:Request - 81, result - Status=ChannelOpening

iisexpress.exe Warning: 0 : A first chance exception of type 'Microsoft.ApplicationServer.Caching.DataCacheException' occurred in Microsoft.ApplicationServer.Caching.Client.dll

Когда это начинает происходить, сервер просто не работает (то есть работает, но не отвечает).

Есть идеи, почему это происходит? Это связано с Windows 8?

Спасибо,

2 ответа

Решение

Я также столкнулся с этой проблемой и проследил ее до виртуальных адаптеров Ethernet Hyper-V на одной машине. Отключение двух установленных адаптеров устранило ошибки тайм-аута в кэшировании Azure. На этой машине я мог продолжать оставаться подключенным к Сети / Интернету.

На другом компьютере Hyper-V не был установлен, и отключение адаптера Ethernet (отключение от Интернета) "устранило" проблему. Поэтому, чтобы запустить свое приложение, я должен каждый раз сначала отключаться от сети.

Похоже, что на обоих этих компьютерах при разработке IP-кэширования возникают проблемы с кэшированием разработки Azure (например, 127.255.0.0, 127.255.0.1, 127.255.0.2 и т. Д.), Оно работает для нескольких запросов, затем начинает время ожидания. При отключении от сети всегда работает.

Это работало хорошо для меня на обеих машинах с Windows 8 в течение нескольких месяцев, прежде чем у меня начались проблемы.

Обновить

Очистка кеша DNS исправила это для меня, теперь она работает при подключении к сети. ipconfig /flushdns

Я не смог полностью подтвердить это, но проблема, похоже, связана с устаревшим протоколом в лазурных библиотеках кэширования.

Я смог обойти эту проблему, запустив эту конфигурацию в моем кэше по умолчанию:

<dataCacheClient name="default" isCompressionEnabled="false" maxConnectionsToServer="4" useLegacyProtocol="false" >

Надеюсь это поможет

Другие вопросы по тегам