Rozwiązywanie problemów z wykonywaniem skryptów w chmurze
Przekazywanie środowiska nie powiodło się
Jeśli etap tworzenia skryptów w chmurze usługi Mesh w procesie przekazywania usługi Mesh zakończył się niepowodzeniem, a wyświetlany błąd to "Sprawdź dzienniki, aby uzyskać więcej informacji", upewnij się, że dzienniki informacji są wyświetlane w konsoli aparatu Unity. Obecnie niektóre błędy są wyświetlane jako dzienniki informacji. Ta funkcja zostanie ulepszona w przyszłej wersji.
Instalacja pakietu skryptów w chmurze usługi Mesh nie powiodła się
- Jeśli wystąpią błędy związane z instalacją pakietu lub instalacją narzędzia .NET (
The tool package could not be restored
lubVerify your unity package integrity
), sprawdź, czy nie masz nieprawidłowych źródeł pakietów w globalnej konfiguracji NuGet (C:\Users\<UserName>\AppData\Roaming\NuGet\NuGet.config
lub domyślnego katalogu konfiguracji NuGet skonfigurowanego na maszynie). - Jeśli wystąpi błąd podczas uruchamiania
package is already installed
trybu odtwarzania, zamknij tryb odtwarzania i uruchom go ponownie, aby temu zapobiec. - Sprawdź prawa dostępu w katalogu
Assets\.MeshCloudScripting\.Packages
.
Po naciśnięciu przycisku Odtwarzania edytora aparatu Unity nic się nie dzieje
- Sprawdź dzienniki aparatu Unity pod kątem błędów. W szczególności jeśli kod skryptów chmury usługi Mesh zawiera błąd kompilacji, w dzienniku błędów zostanie wyświetlony komunikat "Kompilacja skryptów w chmurze nie powiodła się". W takim przypadku otwórz plik csproj dla skryptów chmury usługi Mesh i napraw błędy. Jeśli skompilujesz z poziomu programu Visual Studio, błędy będą wyświetlane wygodniej w danych wyjściowych kompilacji.
- Jeśli występują inne błędy, zapoznaj się z tą stroną, aby uzyskać dodatkowe informacje dotyczące rozwiązywania problemów dotyczących określonych błędów.
- Jeśli nie ma żadnych błędów, w kodzie skryptów chmury usługi Mesh mogą występować błędy środowiska uruchomieniowego. Dołącz do aplikacji za pomocą debugera i sprawdź dane wyjściowe pod kątem błędów.
- Jeśli nic nie pomoże, zgłoś usterkę.
Podczas dołączania zdarzenia do aplikacji usługi Microsoft Mesh skrypty chmury usługi Mesh nie działają
- Upewnij się, że scena jest odtwarzana zgodnie z oczekiwaniami po wyświetleniu podglądu lokalnie w środowisku Unity.
- Upewnij się, że wdrożone środowisko jest zgodne ze sceną.map używaną przez usługę Mesh Cloud Scripting.
- W projekcie aparatu Unity przejdź do składnika Mesh Cloud Scripting , a następnie naciśnij
Serialize Scene
, aby wymusić serializacji grafu sceny. - Przekaż ponownie środowisko za pomocą usługi Mesh Uploader.
- W projekcie aparatu Unity przejdź do składnika Mesh Cloud Scripting , a następnie naciśnij
- Przetestuj lokalną wersję aparatu Unity pod kątem wdrożonej usługi.
- Sprawdź dzienniki w środowisku Unity pod kątem błędów, jeśli nie działają.
- Jeśli nic nie pomoże, zgłoś usterkę.
- Sprawdź dzienniki skryptów chmury usługi Mesh i uwzględnij odpowiednie informacje, jeśli to możliwe w raporcie o błędach.
Kliknięcia nie są odbierane
- Istnieje możliwość, że usługa Mesh Cloud Scripting Service wysyła komunikaty z zbyt dużą częstotliwością obsługi systemu. W takim przypadku kliknięcie może zostać odebrane, ale z powodu dużej listy prac komunikatów propagacja wyniku z powrotem do klienta trwa długo. Spróbuj tymczasowo wyłączyć kod aktualizacji o wysokiej częstotliwości, aby sprawdzić, czy to rozwiąże problem. Jeśli tak, rozważ przejście do usługi Unity Animators zamiast aktualizować właściwości z usługi Mesh Cloud Scripting.
- Jeśli nic nie pomoże, zgłoś usterkę.
Aparat Unity zawiesza się po naciśnięciu przycisku Play
Jeśli przełączysz fokus z aparatu Unity do innej aplikacji podczas odtwarzania aparatu Unity, usługa Mesh Cloud Scripting Service będzie nadal działać, przesyłając komunikaty do kolejki komunikatów. Po przełączeniu fokusu z powrotem na aparat Unity zostanie wstrzymany do momentu całkowitego opróżnienia kolejki. Jeśli usługa Mesh Cloud Scripting Service wprowadza wiele częstych zmian stanu i/lub od dawna przełączasz fokus od aparatu Unity, aparat Unity może zablokować się przez jakiś czas.
Jak zbierać dzienniki
Zbieranie dzienników aparatu Unity
Przed zgłoszeniem problemu ustaw wartość Szczegółowość na Diagnostyka.
Odtwórz problem, a następnie wyślij dzienniki aparatu Unity. Plik dziennika można znaleźć przy użyciu menu aparatu Unity, które jest domyślnie przechowywane pod adresem %LOCALAPPDATA%\Unity\Editor\Editor.log
.
Zbieranie dzienników klientów z aplikacji Microsoft Mesh
Skonfiguruj dzienniki klienta komputera, tworząc plik na pulpicie o nazwie "startup_settings.json" o następującej zawartości:
{
"use_startup_settings": true,
"log_groups": [
{ "name": "CloudScriptingClientSDK", "level": "Debug" },
{ "name": "CloudScriptingUnityRuntime", "level": "Debug" }
]
}
Odtwórz problem, a następnie udostępnij dzienniki aparatu Unity. Dzienniki aplikacji usługi Microsoft Mesh można znaleźć na stronie %USERPROFILE%\AppData\LocalLow\Microsoft\Microsoft Mesh\Player.log
Zbieranie dzienników serwera
Odp. Strumień dzienników
I. Przesyłanie strumieniowe dzienników w witrynie Azure Portal
Aby wyświetlić dzienniki z usługi Mesh Cloud Scripting Service, w sekcji Monitorowanie zasobu usługi AppService kliknij menu Strumień dzienników, aby wyświetlić dzienniki z kontenera, jak pokazano na poniższej ilustracji.
II. Przesyłanie strumieniowe dzienników za pośrednictwem interfejsu wiersza polecenia platformy Azure
Jeśli na komputerze lokalnym jest zainstalowany interfejs wiersza polecenia platformy Azure, możesz również użyć tych samych dzienników z komputera lokalnego, uruchamiając następujące polecenie w terminalu:
az webapp log tail --name <APP_SERVICE_NAME> --resource-group <RESOURCE_GROUP_NAME>
III. Pobieranie dzienników jako pliku zip
Możesz również pobrać pliki dziennika z hostowanej usługi aplikacji, przechodząc do pozycji Narzędzia zaawansowane (Kudu). W sekcji "Narzędzia programistyczne" w okienku po lewej stronie znajdź pozycję Narzędzia zaawansowane, a następnie kliknij przycisk Przejdź.
Zostanie otwarta witryna internetowa SCM, a następnie możesz pobrać dzienniki platformy Docker jako plik zip, jak pokazano poniżej.
B. Azure Monitor
Alternatywnie, korzystając z usługi Azure Monitor, możesz napisać zapytania KQL (język zapytań Kusto), aby wybrać dzienniki, które są szczególnie interesujące zdarzeń, zakresów czasu i nie tylko. Zostanie to automatycznie skonfigurowane, jeśli podczas wdrażania zaznaczono pole "Włącz monitorowanie aplikacji". Jeśli nie, zobacz sekcję Ręczna konfiguracja usługi Azure Monitor, aby skonfigurować usługę Azure Monitor na potrzeby wdrożenia.
Aby to użyć, w sekcji Monitorowanie okienka nawigacji wybierz pozycję Dzienniki.
W okienku Monitorowanie zapytania możesz wybrać interesujące Cię dzienniki. W momencie pisania tekstu mamy "AppServiceConsoleLogs", "AppServiceHTTPLogs", "AppServiceAppLogs" i "AppServicePlatformLogs". Aby wyświetlić dzienniki z kontenera platformy Docker, możesz znaleźć dzienniki w obszarze "AppServiceAppLogs" i/lub "AppServiceConsoleLogs" bardziej przydatne.
W polu tekstowym podanym po prawej stronie menu Tabele wpisz następujące zapytanie KQL:
AppServiceConsoleLogs
| extend newLog = iif(
ResultDescription has ": Orleans.LifecycleSubject"
or ResultDescription has ": Orleans.Runtime.Catalog"
or ResultDescription has ": Microsoft.Hosting.Lifetime"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.CloudApplication"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Launcher.CloudAppInstance"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Core.NamedPipesCloudScriptingSessionGrain"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Cloud.Middleware.CloudScriptingBridge"
or ResultDescription has "UNOBSERVED EXCEPTION:"
or ResultDescription has ": Microsoft.SceneAppService.SceneAppHub"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Core.NamedPipesCloudScriptingSessionGrain"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Launcher.CloudAppInstanceFactory"
or ResultDescription has ": Microsoft.ClientChannel.Hosting.ProcessLifecycleLoggers"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Services.ApplicationWorkDispatcher"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Services.CloudScriptingHostedService"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Launcher.CloudScriptingPreparationService"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Cloud.Middleware.CloudAppProcessFactory"
or ResultDescription has ": Microsoft.ClientChannel.Resources.ClientLinkGrain"
, 1, 0)
| sort by TimeGenerated asc
| extend logId = row_cumsum(newLog)
| summarize ResultDescription=make_list(ResultDescription), TimeGenerated=min(TimeGenerated) by logId
| extend ResultDescription = strcat_array(ResultDescription, "")
| sort by TimeGenerated desc
| project TimeGenerated, ResultDescription
| where not (ResultDescription has "Broadcasting data of size")
Eksportowanie danych do pliku CSV.
Ręczna konfiguracja usługi Azure Monitor (opcjonalnie)
Pomiń, jeśli podczas wdrażania zaznaczono opcję "Włącz monitorowanie aplikacji".
W przypadku tej konfiguracji wymagany jest obszar roboczy usługi Log Analytics. Jeśli nie masz istniejącego obszaru roboczego, postępuj zgodnie z oficjalnym przewodnikiem.
Otwórz witrynę Azure Portal i przejdź do zasobu AppService, w którym działa usługa Mesh Cloud Scripting Service.
Kliknij kartę "Monitorowanie" i przewiń w dół strony. Kliknij przycisk "Konfiguruj usługę Azure Monitor"
Kliknij link "+ Dodaj ustawienie diagnostyczne", aby ustawić kategorie dzienników, które będą wysyłane do wybranego obszaru roboczego.
W wierszu polecenia wypełnij pole "Nazwa ustawienia diagnostycznego", a następnie wybierz interesujące Cię kategorie dzienników (na przykład: dzienniki konsoli usługi App Service, dzienniki aplikacji usługi App Service), a następnie zaznacz pole wyboru "Wyślij do obszaru roboczego usługi Log Analytics", a następnie wybierz preferowany istniejący obszar roboczy usługi Log Analytics.
Włącz usługę Application Insights na stronie usługi App Service. Dzięki temu dzienniki są propagowane do obszaru roboczego usługi Log Analytics.
Wypełnij formularz i pamiętaj, aby wskazać go w tym samym obszarze roboczym, w którym utworzono ustawienie diagnostyczne.
Uruchom ponownie usługę AppService i zaczekaj kilka minut. Teraz powinno być możliwe wykonywanie zapytań dotyczących dzienników w usłudze Azure Monitor zgodnie z opisem w sekcji Azure Monitor.
Badanie wdrożeń skryptów w chmurze na platformie Azure
Na karcie Mesh Uploader Create Environment (Tworzenie środowiska ) zanotuj wybrane wartości Identyfikator subskrypcji i Grupa zasobów.
W witrynie Azure Portal i w wybranej subskrypcji przejdź do grupy zasobów. Możesz wyszukać nazwę grupy zasobów na pasku wyszukiwania lub przejść do usługi "Grupy zasobów" i znaleźć tam grupę zasobów. Upewnij się, że jesteś w odpowiedniej dzierżawie i subskrypcji.
W okienku "Ustawienia" grupy zasobów przejdź do pozycji "Wdrożenia". Powinno to zawierać listę wszystkich wdrożeń, które zostały wprowadzone do grupy zasobów.
Wdrożenia skryptów w chmurze, które cię interesują, to:
Aprowizowanie aplikacji: jest to pierwszy przebieg wdrożenia i służy do aprowizacji wszystkich wymaganych zasobów skryptów w chmurze. Można go zidentyfikować za pomocą metody provisionApp jako filtru w oknie Wdrożenia.
Ustawienia aplikacji: spowoduje to utworzenie i zaktualizowanie ustawień aplikacji internetowej. Można go zidentyfikować za pomocą funkcji svc-appsettings jako filtru w oknie Wdrożenia.
Ustawienia aplikacji przejściowej: spowoduje to utworzenie i zaktualizowanie miejsca przejściowego aplikacji internetowej. Można go zidentyfikować przy użyciu ustawień svc-staging-appsettings jako filtru w oknie Wdrożenia.
Wdrażanie aplikacji: służy do kolejnych zmian infrastruktury. Wdraża najnowszą wersję obrazu platformy Docker cloudhost w miejscu przejściowym aplikacji internetowej. Można to zidentyfikować za pomocą metody deployApp jako filtru w oknie Wdrożenia.
Zamiana miejsc aplikacji: spowoduje to zamianę wersji obrazów platformy Docker cloudhost znajdujących się w aplikacji internetowej i aplikacji internetowej miejsca przejściowego. Można to zidentyfikować za pomocą funkcji deployApp-swap jako filtru w oknie Wdrożenia.
Aby wyświetlić dodatkowe szczegóły związane z wdrożeniem, kliknij nazwę wdrożenia. Szczegóły operacji dla każdego typu zasobu zawierają komunikat o błędzie związany z wdrożeniem.
Oto przykład wdrożenia, które nie powiodło się, w tym przyczynę błędu:
Kolejne kroki z możliwością działania zależą od określonych komunikatów o błędach.
Jak zgłaszać problemy
- Zbierz wszystkie dostępne dzienniki.
- Postępuj zgodnie ze wskazówkami dotyczącymi opinii .