Поделиться через


Локальный кэш в Службе приложений Azure

Подсказка

Вы также можете задать эти вопросы Microsoft Copilot в Azure.

  • Как работает локальный кэш в Службе приложений Azure?
  • Каковы преимущества использования локального кэша в Службе приложений Azure?
  • Каковы ограничения использования локального кэша в службе приложений Azure?

Чтобы найти Copilot в Azure, на панели инструментов портала Azure выберите Copilot.

Содержимое службы приложений Azure хранится в службе хранилища Azure и предоставляется в качестве общей папки устойчивого содержимого. Эта конструкция работает с различными приложениями и имеет следующие атрибуты:

  • Содержимое распределяется между несколькими виртуальными экземплярами приложения (VM).
  • Содержимое является устойчивым, и запущенные приложения могут изменять его.
  • Файлы журналов и файлы диагностических данных доступны в той же общей папке содержимого.
  • Публикация нового содержимого непосредственно обновляет папку содержимого. Вы можете сразу же просматривать это же содержимое с помощью веб-сайта Диспетчера управления версиями (SCM, также известного как Kudu) и запущенного приложения. Однако некоторые технологии (например, ASP.NET) могут инициировать перезапуск приложения для определенных изменений в файле, чтобы загрузить последнее содержимое.

Хотя многие приложения используют одну или несколько этих функций, некоторые приложения нуждаются в высокопроизводительном хранилище содержимого только для чтения, которое они могут использовать с высокой доступностью. Такие приложения могут получить выгоду от использования локального кэша на экземпляре виртуальной машины.

Функция локального кэша в Службе приложений Azure предоставляет представление веб-роли содержимого. Это кэш для записи и последующего сброса вашего хранилища, созданный асинхронно на старте сайта. Когда кэш будет готов, сайт переключается на работу с кэшированным содержимым.

Приложения, использующие локальный кэш, получают следующие преимущества:

  • Они не подвержены задержкам, связанным с доступом к содержимому в службе хранилища Azure.
  • Проблемы с подключением к хранилищу не влияют на них, так как копия только для чтения кэшируется локально.
  • Они испытывают меньше перезапусков приложений из-за изменений в разделе хранилища.

Примечание.

Функция локального кэша не поддерживается в приложениях-функциях или контейнерных приложениях службы приложений, таких как в контейнерах Windows или встроенных или настраиваемых контейнерах Linux. Версия функции, доступной для этих типов приложений, — "Кэш приложений".

Функция локального кэша также не поддерживается в ценовых категориях F1 и D1 службы приложений.

Как локальный кэш изменяет поведение службы приложений

Настройка локального кэша приводит к следующим изменениям:

  • D:\home теперь указывает на локальный кэш, который создается на экземпляре виртуальной машины при запуске приложения. D:\local продолжает указывать на временное, специфичное для виртуальной машины хранилище.

  • Локальный кэш содержит однократную копию /site и /siteextensions папки из общего хранилища содержимого. Эти папки расположены по D:\home\site адресу и D:\home\siteextensionsсоответственно. Эти файлы копируются в локальный кэш при запуске приложения.

    Размер этих двух папок ограничен 1 ГБ по умолчанию, но его можно увеличить до 2 ГБ. По мере увеличения размера кэша требуется больше времени для загрузки кэша. Если увеличить ограничение локального кэша до 2 ГБ, а скопированные файлы превышают этот максимальный размер, служба приложений автоматически игнорирует локальный кэш и считывает из удаленного файлового ресурса.

    Это важно

    Если скопированные файлы превышают определенное ограничение размера локального кэша или если ограничение не определено, операции развертывания и переключения могут завершиться ошибкой. Дополнительные сведения см. в разделе "Вопросы и ответы о ограничениях размера " далее в этой статье.

  • Локальный кэш считывается и записывается. Однако любые изменения удаляются при перемещении приложения между виртуальными машинами или перезапусками. Не используйте локальный кэш для хранения критически важных данных.

  • D:\home\LogFiles и D:\home\Data содержат файлы журналов и данные приложения. Эти папки хранятся локально на экземпляре виртуальной машины и периодически копируются в общее хранилище содержимого. Хотя приложения могут сохранять файлы журналов и данные, записывая их в эти папки, процесс копирования является лучшим. Файлы журналов и данные могут быть потеряны, если экземпляр виртуальной машины внезапно перестает отвечать.

  • Лучшая попытка копирования влияет на потоковую передачу журналов. В потоковых журналах может наблюдаться задержка до одной минуты.

  • В общем хранилище содержимого структура папок для LogFiles и Data изменяется в приложениях, использующих локальный кэш. Теперь созданы вложенные папки с именами, которые включают уникальный идентификатор и отметку времени. Каждая вложенная папка соответствует экземпляру виртуальной машины, в котором приложение выполняется или выполнялось.

  • Другие папки остаются в D:\home локальном кэше и не копируются в общее хранилище содержимого.

  • Развертывания приложений с использованием любого поддерживаемого метода публикуются непосредственно в хранилище долговременного совместно используемого контента. Чтобы обновить папки D:\home\site и D:\home\siteextensions в локальном кэше, необходимо перезапустить приложение. Полный жизненный цикл см. в разделе о рекомендациях далее в этой статье.

  • Представление содержимого по умолчанию сайта SCM продолжает отражать общее хранилище контента.

Примечание.

Если вы используете Java (Java SE, Tomcat или JBoss EAP), то по умолчанию артефакты Java (.jar, WAR и .ear-файлы) копируются локально в рабочую роль. Если ваше Java-приложение зависит от доступа только для чтения к дополнительным файлам, установите для JAVA_COPY_ALL значение true, чтобы эти файлы также копировались. Если включен локальный кэш, он имеет приоритет над этим поведением Java.

Методы включения локального кэша

Вы настраиваете локальный кэш с помощью сочетания зарезервированных параметров приложения. Эти параметры приложения можно задать с помощью одного из следующих методов.

Настройка локального кэша с помощью портала Azure

Включите локальный кэш для каждого веб-приложения, добавив этот параметр приложения: WEBSITE_LOCAL_CACHE_OPTION = Always

Настройка локального кэша с помощью 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"
    }
}

Изменение параметра размера в локальном кэше

По умолчанию размер локального кэша составляет 1 ГБ. Этот размер включает папки /site и /siteextensions, скопированные из хранилища содержимого. Он также включает все локальные журналы и папки данных.

Чтобы увеличить это ограничение, используйте параметр WEBSITE_LOCAL_CACHE_SIZEINMBприложения. Вы можете увеличить размер до 2 ГБ (2000 МБ) на приложение. Помните, что больший размер кэша увеличивает время загрузки кэша.

Рекомендации по использованию локального кэша

Рекомендуется использовать локальный кэш вместе с функцией промежуточных сред .

Следующий процесс представляет рекомендации по использованию локального кэша:

  1. Добавьте параметр WEBSITE_LOCAL_CACHE_OPTION липкого приложения со значением Always в рабочий слот. Если вы используете WEBSITE_LOCAL_CACHE_SIZEINMB, также отметьте этот параметр как закрепленный параметр для слота производства.

  2. Создайте промежуточный слот и опубликуйте его. Как правило, вы не настраиваете промежуточный слот для использования локального кэша, что помогает обеспечить непрерывный цикл сборки, развертывания и тестирования, при этом сохраняя преимущества локального кэша для рабочего слота.

  3. Протестируйте сайт на стадии стейджинга.

  4. Когда вы будете готовы, выполните операцию переключения между тестированным и производственными отсеками.

Настройки постоянно привязаны к слоту. При переключении промежуточного слота в рабочую среду он наследует настройки приложения из локального кэша. Недавно переключенный рабочий слот запускается с локальным кэшем и прогревается в процессе подготовки слота. После завершения переключения рабочий слот работает с локальным кэшем.

Часто задаваемые вопросы

Что делать, если превышено ограничение размера для локального кэша?

Если скопированные файлы превышают ограничение размера локального кэша, приложение возвращается к чтению из удаленной общей папки. В следующей таблице показаны сведения.

Размер локального кэша Скопированные файлы Результат
≤ 2 ГБ ≤ размер локального кэша Считывается из локального кэша.
≤ 2 ГБ > Размер локального кэша Считывает из удаленного общего ресурса.

Операции развертывания и замены могут завершиться ошибкой.

Как узнать, может ли мое приложение воспользоваться локальным кэшем?

Локальный кэш подходит, если применяются все следующие условия:

  • Для вашего приложения требуется высокопроизводительное, надежное хранилище контента.
  • Приложение не использует хранилище содержимого для записи критически важных данных во время выполнения.
  • Общий размер составляет менее 2 ГБ.

Чтобы проверить общий размер ваших папок /site и /siteextensions, можно использовать расширение сайта Использование диска в Azure Web Apps.

Как узнать, переключился ли мой сайт на использование локального кэша?

При использовании локального кэша с промежуточными средами операция переключения не будет завершена, пока не произойдет прогрев локального кэша. Чтобы убедиться, что ваш сайт работает с локальным кэшем, проверьте переменную среды рабочего процесса WEBSITE_LOCALCACHE_READY. Чтобы проверить эту переменную в нескольких экземплярах, ознакомьтесь с инструкциями Kudu для переменной среды рабочего процесса.

Почему мое приложение не отражает недавно опубликованные изменения?

Если приложение использует локальный кэш, необходимо перезапустить сайт, чтобы загрузить последние изменения. Если вы предпочитаете не публиковать изменения непосредственно на рабочем сайте, рекомендуется использовать слоты развертывания, как описано в предыдущем разделе о рекомендациях.

Примечание.

Параметр запуска из пакета несовместим с функцией локального кэша.

Где находятся мои журналы?

При использовании локального кэша структура папок журналов и данных немного изменяется. Подпапки теперь находятся в папке с уникальным идентификатором виртуальной машины и меткой времени. Каждая из этих папок соответствует экземпляру виртуальной машины, в котором выполняется приложение.

Почему мое приложение по-прежнему перезапускается с включенным локальным кэшем?

Локальный кэш помогает предотвратить перезапуск приложения, связанного с хранилищем. Однако приложение может по-прежнему перезапускаться во время запланированных обновлений инфраструктуры на виртуальной машине. В целом следует наблюдать меньше перезапусков с включенным локальным кэшем.

Исключает ли локальный кэш какие-либо каталоги из копирования на более быстрый локальный диск?

Во время процесса копирования все именованные repository папки исключаются. Это поведение полезно в сценариях, когда содержимое сайта включает репозиторий контроля версий, который не требуется для повседневных операций.

Как очистить журналы локального кэша после операции управления сайтом?

Чтобы очистить журналы локального кэша, остановите и перезапустите приложение. Это действие очищает предыдущий кэш.

Почему служба приложений отображает ранее развернутые файлы после перезапуска при включении локального кэша?

Если ранее развернутые файлы снова появляются после перезагрузки, проверьте наличие параметра WEBSITE_DISABLE_SCM_SEPARATION=trueприложения. Добавление этого параметра приводит к тому, что развертывания через Kudu записываются на локальную виртуальную машину вместо постоянного хранилища. Чтобы избежать этой ситуации, следуйте рекомендациям, упомянутым ранее , и выполните развертывания в промежуточном слоте, который не включает локальный кэш.

  • Переменные среды и настройки приложения в службе приложений Azure App Service.