Omówienie lokalnej pamięci podręcznej usługi aplikacja systemu Azure

Uwaga

Lokalna pamięć podręczna nie jest obsługiwana w aplikacjach funkcji ani konteneryzowanych aplikacjach usługi App Service, takich jak w kontenerach systemu Windows lub w App Service dla systemu Linux. Wersja lokalnej pamięci podręcznej, która jest dostępna dla tych typów aplikacji, to pamięć podręczna aplikacji.

aplikacja systemu Azure Zawartość usługi jest przechowywana w usłudze Azure Storage i jest udostępniana w trwały sposób jako udział zawartości. Ten projekt jest przeznaczony do pracy z różnymi aplikacjami i ma następujące atrybuty:

  • Zawartość jest udostępniana w wielu wystąpieniach maszyn wirtualnych aplikacji.
  • Zawartość jest trwała i może być modyfikowana przez uruchamianie aplikacji.
  • Pliki dziennika i pliki danych diagnostycznych są dostępne w tym samym folderze zawartości udostępnionej.
  • Publikowanie nowej zawartości bezpośrednio aktualizuje folder zawartości. Tę samą zawartość można natychmiast wyświetlić za pośrednictwem witryny internetowej SCM i uruchomionej aplikacji (zazwyczaj niektóre technologie, takie jak ASP.NET inicjują ponowne uruchomienie aplikacji w niektórych zmianach w pliku, aby uzyskać najnowszą zawartość).

Chociaż wiele aplikacji korzysta z jednej lub wszystkich tych funkcji, niektóre aplikacje potrzebują tylko magazynu zawartości o wysokiej wydajności, z którego mogą korzystać z wysokiej dostępności. Te aplikacje mogą korzystać z wystąpienia maszyny wirtualnej określonej lokalnej pamięci podręcznej.

Funkcja lokalnej pamięci podręcznej usługi aplikacja systemu Azure udostępnia widok roli internetowej zawartości. Ta zawartość jest pamięcią podręczną zapisu, ale odrzucania zawartości magazynu, która jest tworzona asynchronicznie podczas uruchamiania witryny. Gdy pamięć podręczna jest gotowa, lokacja zostanie przełączona w celu uruchomienia zawartości buforowanej. Aplikacje uruchamiane w lokalnej pamięci podręcznej mają następujące korzyści:

  • Są odporne na opóźnienia występujące podczas uzyskiwania dostępu do zawartości w usłudze Azure Storage.
  • Nie mają one wpływu na problemy z połączeniem z magazynem, ponieważ kopia tylko do odczytu jest buforowana w ramach procesu roboczego.
  • Ma mniej ponownych uruchomień aplikacji z powodu zmian udziału magazynu.

Uwaga

Jeśli używasz języka Java (Java SE, Tomcat lub JBoss EAP), domyślnie artefakty Java--.jar, .war i .ear są kopiowane lokalnie do procesu roboczego. Jeśli aplikacja Java zależy również od dostępu tylko do odczytu do innych plików, ustaw wartość JAVA_COPY_ALL na true , aby te pliki również były kopiowane. Jeśli włączono lokalną pamięć podręczną, pierwszeństwo ma to rozszerzenie specyficzne dla języka Java.

Jak lokalna pamięć podręczna zmienia zachowanie usługi App Service

  • D:\home wskazuje lokalną pamięć podręczną, która jest tworzona w wystąpieniu maszyny wirtualnej podczas uruchamiania aplikacji. D:\local nadal wskazuje tymczasowy magazyn specyficzny dla maszyny wirtualnej.
  • Lokalna pamięć podręczna zawiera jednorazową kopię folderów /site i /siteextensions udostępnionego magazynu zawartości w folderach D:\home\site i D:\home\siteextensions. Pliki są kopiowane do lokalnej pamięci podręcznej po uruchomieniu aplikacji. Rozmiar dwóch folderów dla każdej aplikacji jest domyślnie ograniczony do 1 GB, ale można go zwiększyć do 2 GB. Pamiętaj, że wraz ze wzrostem rozmiaru pamięci podręcznej ładowanie pamięci podręcznej trwa dłużej. Jeśli zwiększono limit lokalnej pamięci podręcznej do 2 GB, a skopiowane pliki przekraczają maksymalny rozmiar 2 GB, usługa App Service dyskretnie ignoruje lokalną pamięć podręczną i odczytuje z zdalnego udziału plików.

Ważne

Gdy skopiowane pliki przekraczają zdefiniowany limit rozmiaru lokalnej pamięci podręcznej lub gdy nie zdefiniowano limitu, operacje wdrażania i zamiany mogą zakończyć się niepowodzeniem z powodu błędu. Aby uzyskać więcej informacji, zobacz często zadawane pytania.

  • Lokalna pamięć podręczna to odczyt i zapis. Jednak wszelkie modyfikacje są odrzucane, gdy aplikacja przenosi maszyny wirtualne lub jest uruchamiana ponownie. Nie używaj lokalnej pamięci podręcznej dla aplikacji, które przechowują dane o znaczeniu krytycznym w magazynie zawartości.
  • D:\home\LogFiles i D:\home\Data zawierają pliki dziennika i dane aplikacji. Dwa podfoldery są przechowywane lokalnie w wystąpieniu maszyny wirtualnej i są okresowo kopiowane do udostępnionego magazynu zawartości. Aplikacje mogą utrwalać pliki dziennika i dane, zapisując je w tych folderach. Jednak kopiowanie do udostępnionego magazynu zawartości jest najlepszym rozwiązaniem, więc istnieje możliwość utraty plików dziennika i danych z powodu nagłej awarii wystąpienia maszyny wirtualnej.
  • Przesyłanie strumieniowe dzienników ma wpływ na najlepszą kopię. W przesyłanych strumieniowo dziennikach można zaobserwować maksymalnie jednominutowe opóźnienie.
  • W udostępnionym magazynie zawartości istnieje zmiana struktury folderów folderów LogFiles i Data dla aplikacji korzystających z lokalnej pamięci podręcznej. Istnieją teraz podfoldery, które są zgodne ze wzorcem nazewnictwa "unikatowy identyfikator" + sygnatura czasowa. Każdy z podfolderów odpowiada wystąpieniu maszyny wirtualnej, w którym aplikacja jest uruchomiona lub została uruchomiona.
  • Inne foldery w D:\home pozostają w lokalnej pamięci podręcznej i nie są kopiowane do udostępnionego magazynu zawartości.
  • Wdrażanie aplikacji za pomocą dowolnej obsługiwanej metody publikuje bezpośrednio w trwałym udostępnionym magazynie zawartości. Aby odświeżyć foldery D:\home\site i D:\home\siteextensions w lokalnej pamięci podręcznej, należy ponownie uruchomić aplikację. Aby zapewnić bezproblemowy cykl życia, zapoznaj się z informacjami w dalszej części tego artykułu.
  • Domyślny widok zawartości witryny SCM jest nadal taki, jak w magazynie zawartości udostępnionej.

Włączanie lokalnej pamięci podręcznej w usłudze App Service

Uwaga

Lokalna pamięć podręczna nie jest obsługiwana w warstwie F1 ani D1 .

Lokalna pamięć podręczna jest konfigurowana przy użyciu kombinacji ustawień aplikacji zarezerwowanych. Te ustawienia aplikacji można skonfigurować przy użyciu następujących metod:

Konfigurowanie lokalnej pamięci podręcznej przy użyciu witryny Azure Portal

Lokalna pamięć podręczna jest włączana dla poszczególnych aplikacji internetowych przy użyciu tego ustawienia aplikacji: WEBSITE_LOCAL_CACHE_OPTION = Always

Azure portal app settings: Local Cache

Konfigurowanie lokalnej pamięci podręcznej przy użyciu usługi Azure Resource Manager

...

{
    "apiVersion": "2015-08-01",
    "type": "config",
    "name": "appsettings",
    "dependsOn": [
        "[resourceId('Microsoft.Web/sites/', variables('siteName'))]"
    ],

    "properties": {
        "WEBSITE_LOCAL_CACHE_OPTION": "Always",
        "WEBSITE_LOCAL_CACHE_SIZEINMB": "1000"
    }
}

...

Zmienianie ustawienia rozmiaru w lokalnej pamięci podręcznej

Domyślnie rozmiar lokalnej pamięci podręcznej to 1 GB. Obejmuje to foldery /site i /siteextensions skopiowane z magazynu zawartości, a także wszystkie lokalnie utworzone dzienniki i foldery danych. Aby zwiększyć ten limit, użyj ustawienia WEBSITE_LOCAL_CACHE_SIZEINMBaplikacji . Rozmiar aplikacji można zwiększyć do 2 GB (2000 MB). Pamiętaj, że ładowanie lokalnej pamięci podręcznej w miarę wzrostu rozmiaru trwa dłużej.

Najlepsze rozwiązania dotyczące korzystania z lokalnej pamięci podręcznej usługi App Service

Zalecamy używanie lokalnej pamięci podręcznej w połączeniu z funkcją Środowiska przejściowe.

  • Dodaj ustawienie WEBSITE_LOCAL_CACHE_OPTION aplikacji sticky z wartością Always do miejsca produkcyjnego. Jeśli używasz polecenia WEBSITE_LOCAL_CACHE_SIZEINMB, dodaj go również jako ustawienie lepkie do miejsca produkcyjnego.
  • Utwórz miejsce przejściowe i opublikuj je w miejscu przejściowym. Zwykle nie ustawiasz miejsca przejściowego, aby używać lokalnej pamięci podręcznej, aby umożliwić bezproblemowy cykl życia testu wdrożenia kompilacji na potrzeby przemieszczania, jeśli uzyskasz korzyści z lokalnej pamięci podręcznej dla miejsca produkcyjnego.
  • Przetestuj witrynę pod kątem miejsca przejściowego.
  • Gdy wszystko będzie gotowe, wykonaj operację zamiany między miejscami przejściowymi i produkcyjnymi.
  • Ustawienia sticky obejmują nazwę i lepki do gniazda. Dlatego gdy miejsce przejściowe zostanie zamienione na środowisko produkcyjne, dziedziczy ustawienia aplikacji Lokalnej pamięci podręcznej. Nowo zamienione miejsce produkcyjne będzie działać z lokalną pamięcią podręczną po kilku minutach i zostanie rozgrzany w ramach rozgrzewki gniazda po zamianie. Dlatego po zakończeniu zamiany miejsca miejsce produkcyjne jest uruchomione względem lokalnej pamięci podręcznej.

Często zadawane pytania

Co zrobić, jeśli przekroczono limit rozmiaru lokalnej pamięci podręcznej?

Gdy skopiowane pliki przekraczają limit rozmiaru lokalnej pamięci podręcznej, aplikacja będzie odczytywać dane z udziału zdalnego. Jednak operacje wdrażania i zamiany mogą zakończyć się niepowodzeniem z powodu błędu. Zapoznaj się z poniższą tabelą, aby uzyskać limity rozmiaru i wyniki.

 Rozmiar lokalnej pamięci podręcznej Pliki z pomińcami Wynik
≤ 2 GB ≤ rozmiar lokalnej pamięci podręcznej Odczytuje z lokalnej pamięci podręcznej.
≤ 2 GB > Rozmiar lokalnej pamięci podręcznej Odczyty z udziału zdalnego.
Uwaga: operacje wdrażania i zamiany mogą zakończyć się niepowodzeniem z powodu błędu.

Jak sprawdzić, czy lokalna pamięć podręczna ma zastosowanie do mojej aplikacji?

Jeśli aplikacja wymaga niezawodnego magazynu zawartości o wysokiej wydajności, nie używa magazynu zawartości do zapisywania krytycznych danych w czasie wykonywania i jest mniejsza niż 2 GB całkowitego rozmiaru, odpowiedź brzmi "tak"! Aby uzyskać całkowity rozmiar folderów /site i /siteextensions, możesz użyć rozszerzenia witryny "Użycie dysku usługi Azure Web Apps".

Jak sprawdzić, czy moja witryna została przełączona na używanie lokalnej pamięci podręcznej?

Jeśli używasz funkcji Lokalnej pamięci podręcznej ze środowiskami przejściowymi, operacja zamiany nie zostanie ukończona do momentu rozgrzania lokalnej pamięci podręcznej. Aby sprawdzić, czy witryna jest uruchomiona w lokalnej pamięci podręcznej, możesz sprawdzić zmienną środowiskową procesu roboczego WEBSITE_LOCALCACHE_READY. Użyj instrukcji na stronie zmiennej środowiskowej procesu roboczego, aby uzyskać dostęp do zmiennej środowiskowej procesu roboczego w wielu wystąpieniach.

Właśnie opublikowano nowe zmiany, ale moja aplikacja nie wydaje się je mieć. Dlaczego?

Jeśli aplikacja używa lokalnej pamięci podręcznej, musisz ponownie uruchomić witrynę, aby uzyskać najnowsze zmiany. Nie chcesz publikować zmian w lokacji produkcyjnej? Zobacz opcje miejsca w poprzedniej sekcji najlepszych rozwiązań.

Uwaga

Opcja uruchamiania z wdrożenia pakietu nie jest zgodna z lokalną pamięcią podręczną.

Gdzie znajdują się moje dzienniki?

W przypadku lokalnej pamięci podręcznej dzienniki i foldery danych wyglądają nieco inaczej. Jednak struktura podfolderów pozostaje taka sama, z tą różnicą, że podfoldery są zagnieżdżone w podfolderze z formatem "unikatowy identyfikator maszyny wirtualnej" i sygnaturą czasową.

Mam włączoną lokalną pamięć podręczną, ale moja aplikacja nadal jest uruchamiana ponownie. Dlaczego? Myślałem, że lokalna pamięć podręczna pomogła w częstym ponownym uruchomieniu aplikacji.

Lokalna pamięć podręczna pomaga zapobiec ponownym uruchomieniom aplikacji związanej z magazynem. Jednak aplikacja może być nadal ponownie uruchamiana podczas planowanych uaktualnień infrastruktury maszyny wirtualnej. Ogólna liczba ponownych uruchomień aplikacji z włączoną lokalną pamięcią podręczną powinna być mniejsza.

Czy lokalna pamięć podręczna wyklucza skopiowanie jakichkolwiek katalogów na szybszy dysk lokalny?

W ramach kroku, który kopiuje zawartość magazynu, wszystkie foldery o nazwie repozytorium są wykluczone. Pomaga to w scenariuszach, w których zawartość witryny może zawierać repozytorium kontroli źródła, które może nie być potrzebne w ciągu dnia działania aplikacji.

Jak opróżnić dzienniki lokalnej pamięci podręcznej po operacji zarządzania lokacją?

Aby opróżnić dzienniki lokalnej pamięci podręcznej, zatrzymaj i uruchom ponownie aplikację. Ta akcja powoduje wyczyszczenie starej pamięci podręcznej.

Dlaczego usługa App Service rozpoczyna wyświetlanie wcześniej wdrożonych plików po ponownym uruchomieniu po włączeniu lokalnej pamięci podręcznej?

Jeśli usługa App Service zacznie wyświetlać wcześniej wdrożone pliki po ponownym uruchomieniu, sprawdź obecność ustawienia aplikacji — "WEBSITE_DISABLE_SCM_SEPARATION=true". Po dodaniu tego ustawienia wszystkie wdrożenia za pośrednictwem kudu zaczynają zapisywać na lokalnej maszynie wirtualnej zamiast magazynu trwałego. Najlepsze rozwiązania wymienione powyżej w tym artykule powinny być używane, gdzie wdrożenia powinny być zawsze wykonywane w miejscu przejściowym, które nie ma włączonej lokalnej pamięci podręcznej.

Więcej zasobów

Dokumentacja zmiennych środowiskowych i ustawień aplikacji