Najlepsze rozwiązania dotyczące usługi aplikacja systemu Azure

Ten artykuł zawiera podsumowanie najlepszych rozwiązań dotyczących korzystania z usługi aplikacja systemu Azure Service.

Colocation (Kolokacja)

Rozwiązanie usługi aplikacja systemu Azure składa się z aplikacji internetowej i bazy danych lub konta magazynu do przechowywania zawartości lub danych. Gdy te zasoby znajdują się w różnych regionach, sytuacja może mieć następujące skutki:

  • Zwiększone opóźnienie komunikacji między zasobami
  • Opłaty pieniężne za transfer danych wychodzących między regionami, jak wspomniano na stronie cennika platformy Azure

Kolokacja jest najlepsza dla zasobów platformy Azure, które tworzą rozwiązanie. Podczas tworzenia zasobów upewnij się, że są one w tym samym regionie świadczenia usługi Azure, chyba że masz określone przyczyny biznesowe lub projektowe, dla których nie mają być. Aplikację usługi App Service można przenieść do tego samego regionu, w którym znajduje się baza danych, korzystając z funkcji klonowania usługi App Service dostępnej w planach usługi App Service w warstwie Premium.

Przypinanie certyfikatu

Przypinanie certyfikatów to praktyka, w której aplikacja zezwala tylko na określoną listę dopuszczalnych urzędów certyfikacji, kluczy publicznych, odcisków palca lub dowolnej części hierarchii certyfikatów.

Aplikacje nigdy nie powinny mieć twardej zależności ani przypiąć do domyślnego certyfikatu TLS z symbolami wieloznacznymi (*.azurewebsites.net). Usługa App Service to platforma jako usługa (PaaS), więc ten certyfikat można obracać w dowolnym momencie. Jeśli usługa obraca domyślny wieloznaczny certyfikat TLS, aplikacje przypięte do certyfikatu będą przerywać i zakłócać łączność aplikacji, które są zakodowane na stałe w określonym zestawie atrybutów certyfikatu. Okresowość rotacji certyfikatu nie jest również gwarantowana, ponieważ częstotliwość rotacji może ulec zmianie w dowolnym momencie.

Aplikacje, które opierają się na przypinaniu certyfikatu, również nie powinny mieć twardej zależności od certyfikatu zarządzanego usługi App Service. Certyfikaty zarządzane usługi App Service można obracać w dowolnym momencie, co prowadzi do podobnych problemów w przypadku aplikacji, które opierają się na stabilnych właściwościach certyfikatu. Najlepszym rozwiązaniem jest zapewnienie niestandardowego certyfikatu TLS dla aplikacji korzystających z przypinania certyfikatu.

Jeśli aplikacja musi polegać na zachowaniu przypinania certyfikatu, zalecamy dodanie domeny niestandardowej do aplikacji internetowej i podanie niestandardowego certyfikatu TLS dla domeny. Następnie aplikacja może polegać na niestandardowym certyfikacie TLS na potrzeby przypinania certyfikatu.

Zasoby pamięci

Jeśli zalecenia dotyczące monitorowania lub usługi wskazują, że aplikacja zużywa więcej pamięci niż oczekiwano, rozważ funkcję automatycznego naprawiania usługi App Service. Automatyczne naprawianie można skonfigurować przy użyciu pliku web.config.

Jedną z opcji funkcji automatycznego naprawiania jest wykonywanie niestandardowych akcji na podstawie progu pamięci. Akcje obejmują od powiadomień e-mail do badania za pośrednictwem zrzutu pamięci do ograniczenia ryzyka na miejscu przez odtworzenie procesu roboczego.

Zasoby procesora CPU

Jeśli zalecenia dotyczące monitorowania lub usługi wskazują, że aplikacja zużywa więcej procesora CPU niż oczekiwano lub występuje powtarzające się skoki użycia procesora CPU, rozważ skalowanie w górę lub skalowanie w górę planu usługi App Service. Jeśli aplikacja jest stanowa, skalowanie w górę jest jedyną opcją. Jeśli aplikacja jest bezstanowa, skalowanie w poziomie zapewnia większą elastyczność i wyższy potencjał skalowania.

Aby uzyskać więcej informacji na temat opcji skalowania i skalowania automatycznego usługi App Service, zobacz Skalowanie aplikacji w górę w usłudze aplikacja systemu Azure Service.

Zasoby gniazda

Częstą przyczyną wyczerpania wychodzących połączeń TCP jest użycie bibliotek klienckich, które nie używają ponownie połączeń TCP lub które nie korzystają z protokołu wyższego poziomu, takiego jak utrzymywanie aktywności HTTP.

Zapoznaj się z dokumentacją każdej biblioteki używanej w dokumentacji planu usługi App Service. Upewnij się, że biblioteki są skonfigurowane lub dostępne w kodzie w celu wydajnego ponownego użycia połączeń wychodzących. Postępuj również zgodnie ze wskazówkami dotyczącymi dokumentacji biblioteki, aby uzyskać odpowiednie instrukcje dotyczące tworzenia i wydawania lub oczyszczania, aby uniknąć wycieku połączeń. Mimo że takie badania dotyczące bibliotek klienckich są w toku, można ograniczyć wpływ, skalując w górę do wielu wystąpień.

Node.js i wychodzące żądania HTTP

Podczas pracy z węzłem Node.js i wieloma wychodzącymi żądaniami HTTP obsługa utrzymywania aktywności HTTP jest ważna. Możesz użyć pakietu agentkeepalivenpm , aby ułatwić korzystanie z kodu.

Zawsze obsłuż http odpowiedź, nawet jeśli nic nie zrobisz w programie obsługi. Jeśli nie obsłużysz poprawnej odpowiedzi, aplikacja w końcu zostanie zablokowana, ponieważ nie są dostępne żadne gniazda.

Oto przykład obsługi odpowiedzi podczas pracy z pakietem http lub https :

const request = https.request(options, function(response) {
    response.on('data', function() { /* do nothing */ });
});

Jeśli używasz aplikacji usługi App Service na maszynie z systemem Linux, która ma wiele rdzeni, innym najlepszym rozwiązaniem jest uruchomienie wielu procesów Node.js w celu uruchomienia aplikacji przy użyciu narzędzia PM2. Możesz to zrobić, określając polecenie uruchamiania w kontenerze.

Na przykład użyj tego polecenia, aby uruchomić cztery wystąpienia:

pm2 start /home/site/wwwroot/app.js --no-daemon -i 4

Kopia zapasowa aplikacji

Kopie zapasowe są zwykle uruchamiane zgodnie z harmonogramem i wymagają dostępu do magazynu (do wyprowadzania plików kopii zapasowych) i baz danych (do kopiowania i odczytywania zawartości, która ma zostać uwzględniona w kopii zapasowej). Wynikiem niepowodzenia dostępu do jednego z tych zasobów jest spójny błąd tworzenia kopii zapasowej.

Dwa najczęstsze przyczyny niepowodzenia tworzenia kopii zapasowej aplikacji to nieprawidłowe ustawienia magazynu i nieprawidłowa konfiguracja bazy danych. Te błędy zwykle występują po zmianie zasobów magazynu lub bazy danych lub po zmianie poświadczeń na potrzeby uzyskiwania dostępu do tych zasobów. Na przykład poświadczenia mogą zostać zaktualizowane dla bazy danych wybranej w ustawieniach kopii zapasowej.

Gdy występują błędy tworzenia kopii zapasowej, zapoznaj się z najnowszymi wynikami, aby dowiedzieć się, jaki typ awarii występuje. W przypadku niepowodzeń dostępu do magazynu przejrzyj i zaktualizuj ustawienia magazynu w konfiguracji kopii zapasowej. W przypadku niepowodzeń dostępu do bazy danych przejrzyj i zaktualizuj parametry połączenia w ramach ustawień aplikacji. Następnie przejdź do aktualizacji konfiguracji kopii zapasowej, aby poprawnie uwzględnić wymagane bazy danych.

Aby uzyskać więcej informacji na temat kopii zapasowych aplikacji, zobacz Tworzenie kopii zapasowych i przywracanie aplikacji w usłudze aplikacja systemu Azure Service.

Aplikacje środowiska Node.js

Domyślna konfiguracja usługi aplikacja systemu Azure dla aplikacji Node.js jest przeznaczona do najlepszego dopasowania do potrzeb najpopularniejszych aplikacji. Jeśli chcesz spersonalizować domyślną konfigurację aplikacji Node.js, aby zwiększyć wydajność lub zoptymalizować użycie zasobów procesora CPU, pamięci lub zasobów sieciowych, zobacz Najlepsze rozwiązania i przewodnik rozwiązywania problemów dla aplikacji Node w usłudze aplikacja systemu Azure Service. W tym artykule opisano ustawienia węzła iisnode, które mogą być konieczne do skonfigurowania dla aplikacji Node.js. Wyjaśniono również, jak rozwiązywać scenariusze lub problemy z aplikacją.

Urządzenia IoT

Możesz ulepszyć środowisko, gdy korzystasz z urządzeń Internetu rzeczy (IoT), które są połączone z usługą App Service.

Jedną z typowych praktyk dotyczących urządzeń IoT jest przypinanie certyfikatów. Aby uniknąć nieprzewidzianych przestojów spowodowanych zmianami w zarządzanych certyfikatach usługi, nigdy nie należy przypinać certyfikatów do domyślnego *.azurewebsites.net certyfikatu lub certyfikatu zarządzanego usługi App Service. Jeśli system musi polegać na zachowaniu przypinania certyfikatów, zalecamy dodanie domeny niestandardowej do aplikacji internetowej i podanie niestandardowego certyfikatu TLS dla domeny. Następnie aplikacja może polegać na niestandardowym certyfikacie TLS na potrzeby przypinania certyfikatu. Aby uzyskać więcej informacji, zobacz sekcję przypinania certyfikatu w tym artykule.

Aby zwiększyć odporność w środowisku, nie należy polegać na jednym punkcie końcowym dla wszystkich urządzeń. Hostuj aplikacje internetowe w co najmniej dwóch regionach, aby uniknąć pojedynczego punktu awarii i być gotowe do przejścia w tryb failover ruchu.

W usłudze App Service można dodawać identyczne domeny niestandardowe do wielu aplikacji internetowych, o ile te aplikacje internetowe są hostowane w różnych regionach. Ta funkcja gwarantuje, że w razie potrzeby przypinania certyfikatów można również przypiąć do podanego niestandardowego certyfikatu TLS.

Inną opcją jest użycie modułu równoważenia obciążenia przed aplikacjami internetowymi, takimi jak Azure Front Door lub Azure Traffic Manager, w celu zapewnienia wysokiej dostępności aplikacji internetowych. Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie wystąpienia usługi Front Door dla globalnej aplikacji internetowej o wysokiej dostępności lub Kontrolowanie ruchu usługi aplikacja systemu Azure za pomocą usługi Azure Traffic Manager.

Następne kroki

Aby uzyskać najlepsze rozwiązania umożliwiające podejmowanie działań, które są specyficzne dla zasobu, użyj diagnostyki usługi App Service:

  1. Przejdź do aplikacji internetowej w witrynie Azure Portal.
  2. Otwórz diagnostykę usługi App Service, wybierając pozycję Diagnozuj i rozwiąż problemy w okienku po lewej stronie.
  3. Wybierz kafelek Najlepsze rozwiązania.
  4. Wybierz pozycję Najlepsze rozwiązania dotyczące dostępności i wydajności lub najlepszych rozwiązań dotyczących optymalnej konfiguracji , aby wyświetlić bieżący stan aplikacji w odniesieniu do tych najlepszych rozwiązań.

Możesz również użyć tego linku, aby bezpośrednio otworzyć diagnostykę usługi App Service dla zasobu: https://portal.azure.com/?websitesextension_ext=asd.featurePath%3Ddetectors%2FParentAvailabilityAndPerformance#@microsoft.onmicrosoft.com/resource/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{siteName}/troubleshoot.