Rozwiązywanie problemów z wystąpieniami ról usług Azure Cloud Services (wsparcie dodatkowe), które nie są uruchamiane
W tym artykule omówiono sposób rozwiązywania problemów z błędami uruchamiania w wystąpieniach ról usługi Azure Cloud Services (rozszerzona pomoc techniczna).
Lista kontrolna rozwiązywania problemów
Wybierz jedną z poniższych opcji, aby zdiagnozować problemy występujące w wystąpieniach ról.
Opcja 1. Wyłączanie błędów niestandardowych
Aby wyświetlić pełne informacje o błędzie, otwórz plik Web.config dla roli sieci Web, ustaw niestandardowy tryb błędu na Off
, a następnie ponownie wdróż usługę:
W programie Visual Studio otwórz rozwiązanie.
W Eksplorator rozwiązań otwórz plik Web.config.
system.web
W sekcji dodaj następujący kod XML:<customErrors mode="Off" />
Zapisz plik.
Ponowne spakowanie i ponowne wdrożenie usługi.
Po ponownym uruchomieniu usługi komunikaty o błędach, które mogą pojawić się w usłudze, będą zawierać nazwy brakujących zestawów lub bibliotek DLL.
Opcja 2. Wyświetlanie stanu wystąpienia roli przy użyciu programu PowerShell
Aby uzyskać informacje o stanie środowiska uruchomieniowego wystąpienia roli, uruchom polecenie cmdlet Get-AzCloudServiceRoleInstanceView :
$roleInstanceView = @{
CloudServiceName = "<cloud-service-name>"
ResourceGroupName = "<resource-group-name>"
RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView
Stan wystąpienia roli jest wymieniony w pierwszej kolumnie, jak pokazano w następujących przykładowych danych wyjściowych:
Statuses PlatformFaultDomain PlatformUpdateDomain
-------- ------------------- --------------------
{RoleStateStarting} 0 0
Opcja 3. Wyświetlanie stanu wystąpienia roli przy użyciu witryny Azure Portal
Aby wyświetlić informacje o stanie wystąpienia roli w witrynie Azure Portal, wykonaj następujące kroki:
W witrynie Azure Portal wyszukaj i wybierz pozycję Usługi w chmurze (wsparcie dodatkowe).
Na liście usług w chmurze wybierz nazwę usługi w chmurze.
W okienku menu wyszukaj w obszarze Ustawienia, a następnie wybierz pozycję Role i wystąpienia.
Wybierz nazwę wystąpienia roli.
W okienku wystąpienia roli zanotuj stan wystąpienia roli w polu Stan .
Opcja 4. Wyświetlanie informacji o błędzie przy użyciu pulpitu zdalnego
Aby uzyskać dostęp do roli i wyświetlić pełne informacje o błędzie, użyj protokołu RDP (Remote Desktop Protocol), wykonując następujące kroki:
Dodaj rozszerzenie pulpitu zdalnego dla usług Azure Cloud Services (rozszerzona obsługa).
W witrynie Azure Portal, gdy wystąpienie usługi w chmurze wyświetli stan Gotowe , użyj pulpitu zdalnego, aby zalogować się do usługi w chmurze. Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z wystąpieniami ról przy użyciu pulpitu zdalnego.
Zaloguj się do maszyny wirtualnej przy użyciu poświadczeń użytych do skonfigurowania pulpitu zdalnego.
Otwórz okno wiersza polecenia.
Uruchom polecenie ipconfig. Skopiuj zwróconą wartość adresu IPv4.
Otwórz przeglądarkę internetową.
Na pasku adresu wklej adres IPv4, a następnie dołącz ukośnik i nazwę domyślnego pliku aplikacji internetowej. Na przykład
http://<ipv4-address>/default.aspx
.
Jeśli teraz przejdziesz do witryny internetowej, zobaczysz komunikaty o błędach zawierające więcej informacji. Oto przykład:
Błąd serwera w aplikacji "/".
Nie można załadować pliku lub zestawu "Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>" lub jednego z jego zależności. W systemie nie można odnaleźć określonego pliku.
Opis: Wystąpił nieobsługiwany wyjątek podczas wykonywania bieżącego żądania internetowego. Przejrzyj ślad stosu, aby uzyskać więcej informacji o błędzie i miejscu jego pochodzenia w kodzie.
Szczegóły wyjątku: System.IO.FileNotFoundException
Opcja 5. Korzystanie z emulatora obliczeniowego
Za pomocą emulatora usługi Azure Compute można diagnozować i rozwiązywać problemy z brakującymi zależnościami i błędami Web.config . Aby uzyskać najlepsze wyniki podczas korzystania z tej metody do diagnozowania problemów, użyj komputera lub maszyny wirtualnej z czystą instalacją systemu Windows.
Aby zdiagnozować problemy przy użyciu emulatora usługi Azure Compute:
Zainstaluj zestaw Azure SDK.
Na komputerze dewelopera skompiluj projekt usługi w chmurze.
W Eksplorator plików w projekcie usługi w chmurze przejdź do folderu bin\debug.
Skopiuj folder csx i plik cscfg na komputer, którego używasz do debugowania problemów.
Na czystym komputerze otwórz okno wiersza polecenia zestawu Azure SDK.
W wierszu polecenia uruchom następujące
csrun
polecenie:csrun.exe /devstore:start
Uruchom następujące polecenie:
run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
Po uruchomieniu roli przeglądarka internetowa wyświetla szczegółowe informacje o błędzie.
Jeśli wymagana jest większa diagnostyka, możesz użyć standardowych narzędzi do rozwiązywania problemów z systemem Windows.
Opcja 6. Korzystanie z funkcji IntelliTrace
Uwaga 16.
Nie można używać funkcji IntelliTrace w programie Visual Studio 2022. Funkcja IntelliTrace jest nadal dostępna, jeśli używasz programu Visual Studio 2019, 2017 lub 2015.
W przypadku ról procesów roboczych i internetowych korzystających z programu .NET Framework 4 można użyć funkcji IntelliTrace. Funkcja IntelliTrace jest dostępna w programie Visual Studio Enterprise.
Aby wdrożyć usługę w chmurze, gdy funkcja IntelliTrace jest włączona:
Sprawdź, czy jest zainstalowany zestaw Azure SDK 1.3 lub nowsza.
W programie Visual Studio wdróż rozwiązanie. Po skonfigurowaniu wdrożenia zaznacz pole wyboru Włącz funkcję IntelliTrace dla ról platformy .NET 4.
Po uruchomieniu wystąpienia roli otwórz Eksploratora serwera.
Rozwiń węzeł Azure\Cloud Services.
Aby wyświetlić listę wystąpień ról, rozwiń wdrożenie. Następnie kliknij prawym przyciskiem myszy wystąpienie roli.
Wybierz pozycję Wyświetl dzienniki Funkcji IntelliTrace.
W obszarze Podsumowanie funkcji IntelliTrace przejdź do pozycji Dane wyjątków i rozwiń ten węzeł.
Na liście wyjątków poszukaj wiersza zawierającego wartość kolumny Typ System.IO.FileNotFoundException. Odpowiadająca wartość kolumny Komunikat powinna przypominać następujący tekst:
Nie można załadować pliku lub zestawu "Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>" lub jednego z jego zależności. W systemie nie można odnaleźć określonego pliku.
Przyczyna 1. Operacja usługi w chmurze kończy się niepowodzeniem z powodu błędu RoleInstanceStartupTimeoutError
Co najmniej jedno wystąpienie roli w usługach Azure Cloud Services (rozszerzona obsługa) może być powolne. Lub wystąpienie roli może być recyklingu lub zablokowane w stanie zajętości i nie jest uruchamiane zgodnie z oczekiwaniami. W takiej sytuacji RoleInstanceStartupTimeoutError
zostanie wyświetlony komunikat o błędzie aplikacji roli.
Aplikacja roli zawiera dwie części, które mogą powodować odtwarzanie roli:
- Zadania uruchamiania
- Kod roli (implementacja elementu RoleEntryPoint)
Jeśli rola jest zatrzymywana, agent platformy jako usługi (PaaS) uruchamia ponownie rolę.
Aby określić, czy problem jest spowodowany przez zadanie uruchamiania, wykonaj następujące kroki:
Spróbuj użyć pulpitu zdalnego, aby nawiązać połączenie z problematycznym wystąpieniem roli.
Po nawiązaniu połączenia z wystąpieniem roli wybierz pozycję Uruchom, a następnie wyszukaj i wybierz pozycję Menedżer zadań.
Aby wyświetlić listę procesów, wybierz kartę Szczegóły w Menedżerze zadań.
Sprawdź, czy istnieją procesy dla WaIISHost.exe (dla elementu WebRole) lub WaWorkerHost.exe (dla elementu WorkerRole). Jeśli brakuje obu tych procesów, zadanie uruchamiania prawdopodobnie kończy się niepowodzeniem.
Czy udało Ci się sprawdzić, czy problem jest spowodowany przez zadanie uruchamiania? Jeśli tak, możesz zastosować następujące rozwiązanie. Rozwiązanie jest jednak dostępne tylko wtedy, gdy zadanie uruchamiania jest zadaniem prostym lub zadaniem pierwszego planu. Rozwiązanie nie dotyczy zadań uruchamiania w tle. Są one uruchamiane asynchronicznie równolegle z uruchamianiem roli.
Rozwiązanie: przeprowadź debugowanie skryptu zadania uruchamiania
Aby rozwiązać problem z niepowodzeniem zadania uruchamiania, przeprowadź debugowanie skryptu uruchamianego podczas rozruchu maszyny wirtualnej. Ten skrypt zadania uruchamiania to plik Startup.cmd. Aby ułatwić badanie problemów w skrypcie, możesz wybrać jedną z następujących opcji:
Wyświetl plik dziennika C:\Resources\WaHostBootstrapper.log. Ten plik jest dziennikem procesu WaHostBootstrapper.exe . Ten proces jest odpowiedzialny za zadania uruchamiania. Jest on opisany w przepływie pracy klasycznej architektury maszyny wirtualnej z systemem Windows platformy Azure. Następnie wyszukaj dowolny błąd lub wyjątek, który obejmuje uruchomienie Startup.cmd. Sprawdź szczególnie, czy kod zakończenia to 0. Jeśli tak nie jest, zadanie uruchamiania zostało zakończone, ale zawiera błędy. Jeśli nie ma dzienników związanych z kodem zakończenia skryptu, zadanie uruchamiania jest nadal w toku.
Jeśli nie można swobodnie uruchomić skryptu zadania uruchamiania w środowisku produkcyjnym z powodu oczekiwanego wpływu na działalność biznesową, dostosuj mechanizm rejestrowania w wierszu polecenia. Możesz na przykład przekierować dane wyjściowe kluczowych informacji w poleceniu skryptu do pliku. Jednym ze sposobów wykonania tej czynności jest dołączenie
> "%TEMP%\StartupLog.txt"
na końcu polecenia.W wierszu polecenia ręcznie uruchom skrypt zadania uruchamiania. Lokalizacje tego skryptu dla ról WebRole lub WorkerRole są wyświetlane w poniższej tabeli.
Rola Lokalizacja skryptu WebRole E:\approot\bin\Startup.cmd WorkerRole E:\approot\Startup.cmd
Przyczyna 2. Brak bibliotek DLL lub zestawów
Brak odpowiedzi wystąpień ról i wystąpień ról, które cykl między stanami mogą być spowodowane brakiem bibliotek DLL lub zestawów.
Poniżej przedstawiono niektóre objawy braku bibliotek DLL lub zestawów:
Wystąpienie roli przechodzi przez stany Inicjowanie, Zajęta i Zatrzymywanie .
Wystąpienie roli zostało przeniesione do stanu Gotowe , ale strona nie jest widoczna w aplikacji internetowej.
Jeśli witryna internetowa jest wdrożona w roli sieci Web i nie ma biblioteki DLL, może zostać wyświetlony następujący komunikat o błędzie środowiska uruchomieniowego serwera.
Błąd serwera w aplikacji "/".
Błąd środowiska uruchomieniowego
Opis: Na serwerze wystąpił błąd aplikacji. Bieżące niestandardowe ustawienia błędów dla tej aplikacji uniemożliwiają zdalne wyświetlanie szczegółów błędu aplikacji (ze względów bezpieczeństwa). Może to być jednak wyświetlane przez przeglądarki uruchomione na komputerze serwera lokalnego.
Szczegóły: Aby umożliwić wyświetlanie szczegółów tego konkretnego komunikatu o błędzie na maszynie zdalnej, utwórz
<customErrors>
tag z plikiem konfiguracji "web.config" znajdującym się w katalogu głównym bieżącej aplikacji internetowej. Ten<customErrors>
tag powinien następnie mieć atrybut "mode
" ustawiony na "Off
".
Rozwiązanie: Rozwiązywanie problemów z brakującymi bibliotekami DLL i zestawami
Aby usunąć błędy brakujących bibliotek DLL i zestawów:
W programie Visual Studio otwórz rozwiązanie.
W Eksplorator rozwiązań otwórz folder Odwołania.
Wybierz zestaw zidentyfikowany w komunikacie o błędzie.
W obszarze Właściwości ustaw właściwość Copy Local na True.
Ponownie wdróż usługę w chmurze.
Po sprawdzeniu, czy błędy nie są już wyświetlane, ponownie wdróż usługę. Podczas konfigurowania wdrożenia nie zaznaczaj pola wyboru Włącz funkcję IntelliTrace dla ról platformy .NET 4.
Następne kroki
- Dowiedz się, jak rozwiązywać problemy z rolą usługi w chmurze przy użyciu danych diagnostycznych komputerów paaS platformy Azure.
Więcej informacji
Aby uzyskać informacje na temat początkowej konfiguracji, wykonywania i przykładów zadań uruchamiania w klasycznej usłudze w chmurze, zobacz następujące artykuły:
- Jak skonfigurować i uruchomić zadania uruchamiania dla usługi Azure Cloud Service (klasycznej)
- Typowe zadania uruchamiania usługi Cloud Service (klasyczne)
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.