Ponów błędy połączenia podczas korzystania z klienta Booksleeve Redis w maszynie wirtualnej Azure

Niedawno zacząłem prowadzić mój projekt poboczny na nowych maszynach wirtualnych Azure. Aplikacja wykorzystuje Redis jako pamięć podręczną w pamięci. Wszystko działało dobrze w moim lokalnym środowisku, ale teraz, kiedy przeniosłem kod do Azure, widzę dziwne wyjątki wychodzące z Booksleeve.

Po pierwszym uruchomieniu aplikacji wszystko działa prawidłowo. Jednak po około 5-10 minutach bezczynności następne żądanie do aplikacji doświadcza wyjątku sieciowego (pracuję teraz i nie mam na sobie dokładnych komunikatów o błędach, więc opublikuję je, gdy wrócę do domu, jeśli ludzie myślą, że są kluczowi do dyskusji) Powoduje to zamknięcie wewnętrznej MessageQueue, co powoduje, że każde kolejne Enqueue () rzuca wyjątek („The Queue Is Closed”).

Więc po pewnym googlu znalazłem ten post SO:Utrzymywanie otwartego połączenia Redis za pomocą BookSleeve o menedżerze połączeń DIY. Z pewnością mogę wprowadzić coś podobnego, jeśli to najlepszy sposób działania.

Tak więc pytania:

Czy normalne jest, że RedisConnection zamyka się okresowo po pewnym czasie?Widziałemconn.SetKeepAlive() metoda, ale wypróbowałem wiele różnych wartości i żadna z nich nie ma znaczenia. Czy jest coś więcej w tym względzie, czy szczekam niewłaściwe drzewo?Czy pomysł menedżera połączeń z posta jest najlepszym sposobem na obsłużenie tego scenariusza?Czy ktoś może rzucić dodatkowe światło na to, dlaczego hosting mojej instancji Redis w nowej maszynie wirtualnej Azure powoduje ten problem? Mogę również potwierdzić, że jeśli uruchomię środowisko lokalne na maszynie wirtualnej Azure Redis, wystąpi ten problem.

Tak jak powiedziałem, jeśli połączenie Redisa nie będzie działać po bezczynności, opublikuję ślady stosu i wyjątki z moich dzienników po powrocie do domu.

Dzięki!

AKTUALIZACJA Didier wskazał w komentarzach, że może to być związane z układem równoważenia obciążenia, którego używa Azure:http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/12/windows-azure-load-balancer-timeout-details.aspx

Zakładając, że tak jest, jaki byłby najlepszy sposób na wdrożenie menedżera połączeń, który mógłby wyjaśnić ten problem. Zakładam, że nie powinienem tworzyć połączenia na jednostkę pracy, prawda?

questionAnswers(2)

yourAnswerToTheQuestion