7

エミュレーター (クラウドではなくローカル) で Windows Azure キャッシュを使用しているときに問題が発生しました。

私のシステム構成は次のとおりです。

  • ウィンドウズ8
  • Visual Studio 2012 Update 1
  • Azure SDK とエミュレーター 1.8
  • Windows Azure キャッシング 1.8.1
  • Web 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に関連していますか?

ありがとう、

4

2 に答える 2

1

私もこの問題を抱えており、1 台のマシンの Hyper-V 仮想イーサネット アダプターにまでたどり着きました。インストールした 2 つのアダプターを無効にすると、Azure キャッシュのタイムアウト エラーが修正されました。このマシンでは、ネットワーク/インターネットへの接続を維持できました。

別のマシンではHyper-Vがインストールされておらず、イーサネットアダプターを無効にする(インターネットから切断する)と問題が「修正」されました。したがって、アプリケーションを実行するには、毎回ネットワークから切断する必要があります。

これらのマシンの両方で、キャッシュ サーバー (127.255.0.0、127.255.0.1、127.255.0.2 など) の IP ルックアップを実行するときに、開発 Azure キャッシングに問題があるように見えます。タイムアウトを開始します。ネットワークから切断されている場合は、常に機能します。

これは、問題が発生する前の数か月間、両方の Windows 8 マシンで問題なく動作していました。

アップデート

DNSキャッシュをフラッシュするとこれが修正され、ネットワークに接続しているときに機能するようになりました. ipconfig /flushdns

于 2013-09-11T15:39:09.567 に答える
0

これを完全に確認することはできませんでしたが、問題は azure キャッシュ dll のレガシー プロトコルに関係しているようです。

デフォルトのキャッシュで次の構成を実行することで、この問題を回避できました。

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

お役に立てれば

于 2014-01-28T03:58:43.547 に答える