警告: わかりましたので、これは奇妙なものであり、SO が適切な場所であるかどうかはわかりません。
Azure Redis Cache インスタンスに接続する Azure Web サイトがあります。(StackExchange.Redis を使用)
すべてが素晴らしかったのですが、ある日、Web サイトが Redis に接続できなくなりました。
エラー:
redis サーバーに接続できませんでした。切断されたマルチプレクサを作成するには、AbortOnConnectFail を無効にします。PING での SocketFailure
ここに私の接続文字列があります:
mycache.redis.cache.windows.net,ssl=true,パスワード=xxxxxx,syncTimeout=5000
私の診断手順は次のとおりです。
- ローカルから Azure Redis に接続してみてください。結果: 成功 (つまり、コードは適切ですか?)
- 新しい Azure Redis インスタンスを試してスピンアップし、Azure から接続します。結果: 不合格 (Web サイトが Azure Redis インスタンスに接続できない場合)
- 既存の Redis キャッシュを指す、エラー コードと同じコードを使用して、新しい Azure Web サイトをスピンアップします。結果: 成功 (うーん、何?)
- 新しい MVC Web サイトをファイルし、StackExchange.Redis を追加し、新しい Azure Web サイトにデプロイして、Redis に接続します。結果: 成功 (つまり、Redis は優れているのでしょうか?)
- 上記のバニラ MVC Web サイトを既存のAzure Web サイトにデプロイします (コード 4 と同じで、同じ Redis に接続します。違いは、古い Azure Web サイトの物理マシン/ネットワークを使用していることだけです)。結果: 失敗 (wtf ??)
では、Redis が Azure Web サイトを「ブラックリストに載せた」と考えているのでしょうか? (それも可能ですか?)クライアント(私のコード) が再接続しようとしないことはわかっていますが、サイトを何度もバウンスしましたが、Redis に再接続できません。
同じ Redis インスタンスに接続する同じコードを使用して新しいAzure Web サイトをスピンアップすると成功するという事実は、Azure/Redis で何らかのブラックリスト/ルーティングの問題が発生したことを示しています。
何か案は?
編集
問題は Azure VNET にあるようです。私の Web サイトが Azure Virtual Network の一部である場合、Redis に接続できません。しかし、ネットワークから外すと、問題なく接続されます。今日まで、このセットアップは正常に機能していました。
VNET 内の Web サイトが Azure Redis に接続できないように、Azure が変更を行ったのではないでしょうか? (意味がわからない)
編集2:
Redis 接続試行のログが添付されています。
例外: redis サーバーに接続できませんでした。切断されたマルチプレクサを作成するには、AbortOnConnectFail を無効にします。SocketFailure on PING connection-string-removed :6380,password= password-removed ,ssl=True Connecting connection-string-removed :6380/Interactive... BeginConnect: connection-string-removed :6380 1 つの一意のノードが指定されました タイブレークを要求していますfrom connection-string-removed :6380
__Booksleeve_TieBreak... エンドポイント 00:00:05 の応答を許可しています... タスクの完了を待機中、IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=4,Free=32763 ,Min=1,Max=32767) すべてのタスクが正常に完了したわけではありません, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=5,Free=32762,Min=1, Max=32767) connection-string-removed :6380 が応答しませんでした タスクの完了を待っています、IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=5,Free=32762,Min =1,Max=32767) すべてのタスクが正常に完了したわけではありません。IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=5,Free=32762,Min=1,Max= 32767) connection-string-removed : 6380 の指定に失敗しました (WaitingForActivation) マスターが検出されませんでした connection-string-removed:6380: スタンドアロン v2.0.0、マスター。キープアライブ: 00:01:00; int: 接続中。サブ: 接続中; 使用されていません: DidNotRespond接続文字列が削除されました:6380: int ops=0、qu=2、qs=0、qc=0、wr=0、socks=1; サブ ops=0、qu=0、qs=0、qc=0、wr=0、socks=1 循環 op-count スナップショット。int: 0 (0.00 ops/s; スパン 10 秒); サブ: 0 (0.00 ops/s; スパン 10 秒) 同期タイムアウト: 0; 発射して忘れる: 0; 最後のハートビート: -1 秒前に失敗した接続をリセットして再試行しています... 再試行しています。残りの試行回数: 2... 1 つの一意のノードが指定されました 接続文字列からタイブレークを要求してい ます-削除:6380 > __Booksleeve_TieBreak... エンドポイント 00:00:05 の応答を許可しています... タスクの完了を待っています。IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=6, Free=32761,Min=1,Max=32767) すべてのタスクが正常に完了したわけではありません, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=7,Free=32760,Min =1,Max=32767) connection-string-removed :6380 が応答しませんでした タスクの完了を待っています、IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=7,Free= 32760,Min=1,Max=32767) すべてのタスクが正常に完了したわけではありません, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=7,Free=32760,Min=1 、最大 = 32767)接続文字列が削除されました: 6380 指名に失敗しました (WaitingForActivation) マスターが検出されませんでした 接続文字列が削除されました:6380: スタンドアロン v2.0.0、マスター。キープアライブ: 00:01:00; int: 接続中。サブ: 接続中; 使用されていません: DidNotRespond接続文字列が削除されました:6380: int ops=0、qu=2、qs=0、qc=0、wr=0、async=3、socks=2; サブ ops=0、qu=0、qs=0、qc=0、wr=0、socks=2 循環 op-count スナップショット。int: 0 (0.00 ops/s; スパン 10 秒); サブ: 0 (0.00 ops/s; スパン 10 秒) 同期タイムアウト: 0; 発射して忘れる: 0; 最後のハートビート: -1 秒前に失敗した接続をリセットして再試行しています... 再試行しています。残りの試行: 1... 1 つの一意のノードが指定されました接続文字列からのタイブレークを要求しています-削除:6380 > __Booksleeve_TieBreak... エンドポイント 00:00:05 が応答できるようにしています... タスクの完了を待っています、IOCP: (Busy=0 ,Free=1000,Min=1,Max=1000), WORKER: (Busy=8,Free=32759,Min=1,Max=32767) EndConnect: connection-string-removed :6380 (ソケットのシャットダウン) Connect complete: connection-string-removed :6380 すべてのタスクが正常に完了、IOCP: (Busy=0,Free=1000,Min=1,Max=1000)、WORKER: (Busy =11,Free=32756,Min=1,Max=32767) connection-string-removed :6380 faulted: SocketFailure on PING タスク完了待ち, IOCP: (Busy=0,Free=1000,Min=1,Max=1000) , WORKER: (Busy=11,Free=32756,Min=1,Max=32767) すべてのタスクが正常に完了したわけではありません, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy =7,Free=32760,Min=1,Max=32767) connection-string-removed : 6380 の指定に失敗しました (WaitingForActivation) マスターが検出されませんでした connection-string-removed:6380: スタンドアロン v2.0.0、マスター。キープアライブ: 00:01:00; int: 接続中。サブ: 接続中; 使用されていません: DidNotRespond接続文字列が削除されました:6380: int ops=0、qu=2、qs=0、qc=0、wr=0、async=7、socks=3; サブ ops=0、qu=0、qs=0、qc=0、wr=0、socks=3 循環 op-count スナップショット。int: 0 (0.00 ops/s; スパン 10 秒); サブ: 0 (0.00 ops/s; スパン 10 秒) 同期タイムアウト: 0; 発射して忘れる: 0; 最後のハートビート: -1 秒前
誰でもこれを解読できますか?