【问题标题】:Windows Azure Caching while debugging - Request Timeout调试时的 Windows Azure 缓存 - 请求超时
【发布时间】:2013-02-05 22:45:55
【问题描述】:

我在使用带有模拟器的 Windows Azure 缓存时遇到了问题(即在本地,而不是云上)。

我的系统配置是:

  • Windows 8
  • Visual Studio 2012 更新 1
  • Azure SDK 和模拟器 1.8
  • Windows Azure 缓存 1.8.1
  • 网络 API
  • .NET 4.5

问题是:我们的服务器使用(角色)Windows Azure 缓存进行会话管理等。一旦服务器收到来自客户端的请求,它就开始与 Windows Azure 缓存通信以放置/获取一些对象(例如,会话对象)。然后发生“超时”异常 (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 有关?

谢谢,

【问题讨论】:

    标签: azure azure-caching


    【解决方案1】:

    我也遇到了这个问题,并将其追溯到一台机器上的 Hyper-V 虚拟以太网适配器。禁用我安装的两个适配器修复了 Azure 缓存中的超时错误。在这台机器上,我可以继续保持与网络/互联网的连接。

    在另一台机器上未安装 Hyper-V,禁用以太网适配器(断开与 Internet 的连接)“修复”了该问题。因此,要运行我的应用程序,我必须每次都先断开网络连接。

    在这两台机器上,开发 Azure 缓存在为缓存服务器(例如 127.255.0.0、127.255.0.1、127.255.0.2 等)进行 IP 查找时似乎存在问题,它适用于少数几个请求,然后开始超时。当与网络断开连接时,它始终可以工作。

    在我开始遇到问题之前的几个月,这对我来说在两台 Windows 8 机器上都运行良好。

    更新

    刷新 DNS 缓存为我解决了这个问题,现在它可以在连接到网络时工作。 ipconfig /flushdns

    【讨论】:

    • 感谢分享您的经验! :)
    【解决方案2】:

    我无法完全确认这一点,但问题似乎与 azure 缓存 dll 中的旧协议有关。

    我能够通过在我的默认缓存上运行此配置来解决此问题:

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 2013-07-06
      • 2016-11-23
      • 2011-02-26
      • 2016-12-05
      相关资源
      最近更新 更多