2012-05-19 10 views
5

Mam rolę roboczą, w której uruchamianych jest wiele wątków w celu obsługi połączeń od klientów. Podczas testowania obciążenia zauważyliśmy, że rola przestaje odpowiadać i pozostaje w tym stanie do czasu ponownego uruchomienia. Patrząc na to w debuggerze Visual Studio (przez wstrzymanie aktywnego procesu), widzimy wiele wątków czekających, ale gdy są one wstrzymane, żadna aktywność nie ma miejsca. Skąd wiadomo, co powoduje pozostawienie roli w tym stanie?Rola braku systemu Windows Azure

Odpowiedz

6

Jak wspomniałeś, że problem zaczął się dziać z rolą pracownika podczas wykonywania testu obciążenia, można bezpiecznie założyć, że Rola początkowo działała poprawnie. Prowadzi to do wniosku, że problem dotyczy konkretnej aplikacji, a nie konkretnej platformy. Istnieją dwa sposoby, można uzyskać kilka informacji diagnostycznych z systemu Windows Azure VM:

  • Wariant 1 (preferowane): W celu sprawdzenia, co się dzieje w twojej Azure VM, naprawdę trzeba dodać Windows Azure Diagnostics z Twoja rola, dzięki czemu możesz uzyskać licznik wydajności, szczegóły pamięci, dane o stanie procesu i inne dane przeniesione z platformy Azure VM do magazynu Azure, które możesz analizować w trybie offline.

  • Opcja 2: Włącz dostęp RDP do maszyny wirtualnej Azure, a następnie Zaloguj się do maszyny Azure VM i zainstaluj, Perfmon, Process Explorer i inne narzędzia monitorowania kondycji w maszynie wirtualnej Azure i monitoruj, co się dzieje.

  • Wariant 3 (Last Resort): RDP do Azure VM i zainstalować WinDBG i debugować proces hosta

W takiej sytuacji, gdy masz rola pracownik przestał działać, to jest to, co naprawdę sugerują do jednego:

  1. poszukaj procesora, ciśnienia pamięci, listy wątków i dowiedz się, które wątki są zablokowane i co może być przyczyną.
  2. Poszukaj, jak wygląda proces roboczy hosta, kiedy uruchomiono go po raz ostatni, czy z jakiegoś powodu jest poddawany recyklingowi, jak długo działa w systemie Azure VM
  3. Jeśli masz osobny proces, który jest ustawiony jako "ProgramEntryPoint" w rola pracownika, sprawdź jego stan zdrowia
  4. Sprawdź, czy w dzienniku zdarzeń na poziomie aplikacji nie ma żadnych wskazówek. W roli pracownika nie widzę, aby coś było w dzienniku zdarzeń aplikacji, ale warto się przyjrzeć.
  5. Używam Monitora Procesu, aby monitorować kilka procesów i zbierać dzienniki, aby zobaczyć, kiedy proces umiera, jaki był ostatni stan, do czego był dostęp i czy był zagłodzony przez inne problemy.

Najważniejsze jest to, że naprawdę musisz wykopać podstawową przyczynę na platformie Azure VM w taki sam sposób, jak robisz to na komputerze lokalnym.

+0

Dziękuję za to, naprawdę dobre wskazówki. Na początku problem ten pojawiał się jedynie w roli robotnika na Azure, ale po kilku zmianach w szyku testowym zaczęliśmy widzieć go w fazie rozwoju. Mamy: * Konfiguracja diagnostyki zdalnego dostępu/Azure * Liczniki perf i niestandardowe dzienniki zdarzeń skonfigurowane do raportowania specyficznego dla aplikacji Istnieje wiele miejsc, w których wykonywane są operacje asynchroniczne. Zgadujemy, że wystąpił nieobsługiwany wyjątek, ale okazało się, że jest trudny do znalezienia. – Irwin

+0

Czy mogę zapytać, którego zestawu SDK Azure używasz? W starszym pakiecie SDK wystąpiły problemy ze zdalnym przesyłającym, które mogą powodować problemy losowe na platformie Azure, jednak SDK 1.6 jest bardzo stabilny.Co się stanie, jeśli usuniesz dostęp RDP i Azure Diagnostics z aplikacji, czy problem będzie nadal występował? – AvkashChauhan