Visão geral do cache local do Serviço de Aplicativo do Azure

Observação

O cache local não é compatível com aplicativos de funções ou aplicativos do Serviço de Aplicativo em contêiner, como em Contêineres do Windows ou no Serviço de Aplicativo no Linux. O cache de aplicativo é uma versão do cache local disponível para esses tipos de aplicativos.

O conteúdo do Serviço de Aplicativo do Azure é armazenado no Armazenamento do Azure e exibido de forma duradoura como um compartilhamento de conteúdo. Esse design tem como objetivo trabalhar com vários aplicativos e tem os seguintes atributos:

  • O conteúdo é compartilhado entre várias instâncias de VM (máquina virtual) do aplicativo.
  • O conteúdo é duradouro e pode ser modificado pela execução dos aplicativos.
  • Os arquivos de log e arquivos de dados de diagnóstico estão disponíveis na mesma pasta de conteúdo compartilhado.
  • A publicação de novo conteúdo atualiza a pasta de conteúdo diretamente. Você pode exibir o mesmo conteúdo imediatamente por meio do site do SCM e do aplicativo em execução (normalmente, algumas tecnologias, como o ASP.NET, iniciam a reinicialização do aplicativo no caso de algumas alterações de arquivo para obter o conteúdo mais recente).

Embora muitos aplicativos usem um ou todos esses recursos, outros precisam somente de um repositório de conteúdo de alto desempenho somente leitura de onde eles possam ser executados com alta disponibilidade. Esses aplicativos podem se beneficiar de uma instância de máquina virtual de um cache local específico.

O recurso Cache Local do Serviço de Aplicativo do Azure fornece uma exibição de função web de seu conteúdo. Esse conteúdo é um cache de write-but-discard do seu conteúdo de armazenamento que é criado de forma assíncrona na inicialização do site. Quando o cache estiver pronto, o site será alternado para executar o conteúdo em cache. Aplicativos executados no Cache Local tem as seguintes vantagens:

  • Eles estão imunes às latências que ocorrem quando eles acessam o conteúdo no Armazenamento do Azure.
  • Elas não são afetadas por problemas de conexão com o armazenamento, pois a cópia somente leitura é armazenada em cache no trabalho.
  • Há uma quantidade menor de reinicializações do aplicativo devido a alterações no compartilhamento do armazenamento.

Observação

Se você estiver usando Java (Java SE, Tomcat ou JBoss EAP), por padrão, os artefatos Java--.jar, .war e .ear -- serão copiados localmente para o trabalho. Se o aplicativo Java depender do acesso somente leitura a outros arquivos também, defina JAVA_COPY_ALL para true que esses arquivos também sejam copiados. Se o Cache Local estiver habilitado, ele assumirá a precedência sobre esse aprimoramento específico do Java.

Como o cache local altera o comportamento do serviço de aplicativo

  • D:\home aponta para o cache local, que é criado na instância da VM quando o aplicativo é inicializado. D:\local continua apontando para o armazenamento temporário específico da VM.
  • O cache local contém uma cópia única das pastas /site e /siteextensions do armazenamento de conteúdo compartilhado, em D:\home\site e D:\home\siteextensions, respectivamente. Os arquivos são copiados para o cache local quando o aplicativo é iniciado. O tamanho das duas pastas de cada aplicativo é limitado a 1 GB por padrão, mas você pode aumentá-lo para 2 GB. Observe que demora mais tempo para carregar o cache à medida que o tamanho dele aumenta. Se você tiver aumentado o limite de cache local para 2 GB e os arquivos copiados excederem esse tamanho máximo, o Serviço de Aplicativo irá ignorar silenciosamente o cache local e ler o compartilhamento de arquivos remoto.

Importante

Quando os arquivos copiados excedem o limite de tamanho do Cache Local definido ou quando nenhum limite é definido, as operações de implantação e troca podem falhar com um erro. Consulte as Perguntas frequentes para obter mais informações.

  • O cache local é de leitura/gravação. No entanto, qualquer modificação é descartada quando o aplicativo move as máquinas virtuais ou é reiniciado. Não use o cache local para aplicativos que armazenam dados de missão crítica no armazenamento de conteúdo.
  • D:\home\LogFiles e D:\home\Data contêm arquivos de log e dados do aplicativo. As duas subpastas são armazenadas localmente na instância da VM e são copiadas para o armazenamento de conteúdo compartilhado periodicamente. Os aplicativos podem manter arquivos e dados de log, gravando-os nessas pastas. No entanto, a cópia para o armazenamento de conteúdo compartilhado é melhor esforço, por isso, é possível que os arquivos de log e os dados sejam perdidos devido a uma falha súbita de uma instância de VM.
  • O fluxo de logs é afetado pela cópia de melhor esforço. Você pode observar até um atraso de um minuto nos logs transmitidos.
  • No armazenamento de conteúdo compartilhado, há uma alteração na estrutura de pastas das pastas Arquivos de Log e Dados para aplicativos que usam o cache local. Há agora subpastas dentro deles que seguem o padrão de nomenclatura de "identificador exclusivo" + carimbo de data / hora. Cada uma das subpastas corresponde a uma instância de VM em que o aplicativo está sendo executado ou foi executado.
  • Outras pastas em D:\home permanecem no cache local e não são copiadas para o armazenamento de conteúdo compartilhado.
  • A implantação de aplicativos por meio de qualquer método suportado é publicada diretamente no armazenamento de conteúdo compartilhado durável. Para atualizar as pastas D:\home\site e D:\home\siteextensions no cache local, o aplicativo precisa ser reiniciado. Para tornar o ciclo de vida contínuo, confira as informações neste artigo.
  • A exibição de conteúdo padrão do site do SCM continua sendo aquela do repositório de conteúdo compartilhado.

Habilitar o Cache Local no Serviço de Aplicativo

Observação

Não há suporte ao cache local nas camadas F1 ou D1.

Configure o Cache Local usando uma combinação de configurações de aplicativo reservadas. Você pode configurar essas configurações de aplicativo usando os seguintes métodos:

Configurar o Cache Local usando o portal do Azure

Habilitar o Cache Local com base em cada aplicativo Web usando esta configuração de aplicativo: WEBSITE_LOCAL_CACHE_OPTION = Always

Azure portal app settings: Local Cache

Configurar o Cache Local usando o 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"
    }
}

...

Alterar a configuração de tamanho no Cache Local

Por padrão, o tamanho do cache local é de 1 GB. Isso inclui as pastas /site e /siteextensions que são copiadas do repositório de conteúdo, bem como as pastas de dados e de logs criadas localmente. Para aumentar esse limite, use a configuração do aplicativo WEBSITE_LOCAL_CACHE_SIZEINMB. Você pode aumentar o tamanho de até 2 GB (2000 MB) por aplicativo. Observe que demora mais tempo para carregar o cache local à medida que o tamanho dele aumenta.

Práticas recomendadas para usar o Cache Local do Serviço de Aplicativo

Recomendamos que você use o Cache Local em conjunto com o recurso Ambientes de Preparo .

  • Adicione a configuração de aplicativo temporáriaWEBSITE_LOCAL_CACHE_OPTION com o valor Always ao seu slot de Produção. Se estiver usando WEBSITE_LOCAL_CACHE_SIZEINMB, adicione-o também como uma configuração temporária ao slot de produção.
  • Crie um slot de preparo e publique em seu slot de preparo. Normalmente, você não deve definir o slot de preparo para usar o cache local para habilitar um ciclo de vida contínuo de compilação-implantação-teste para preparo se tem os benefícios do Cache Local para o slot de produção.
  • Teste seu site no Slot de preparo.
  • Quando estiver pronto, execute uma operação de permuta entre seus slots de Preparo e de Produção.
  • As configurações temporárias incluem o nome e a parte temporária em um slot. Assim, quando o Slot de preparo for trocado pelo de Produção, ele herda as configurações do aplicativo do Cache Local. O Slot de produção recém-trocado será executado no cache local após alguns minutos e será aquecido como parte do aquecimento de slot após a troca. Assim, quando a permuta do slot é concluída, o slot de produção é executado no cache local.

Perguntas frequentes

E se o limite de tamanho do Cache Local for excedido?

Quando os arquivos copiados excederem o limite de tamanho do Cache Local, o aplicativo lerá do compartilhamento remoto. No entanto, as operações de implantação e troca podem falhar com um erro. Consulte a tabela abaixo para obter os limites de tamanho e os resultados.

 Tamanho do cache local Arquivos copiados Resultado
≤ 2 GB ≤ tamanho do Cache Local Leituras do cache local.
≤ 2 GB > tamanho do Cache Local Leituras do compartilhamento remoto.
Observação: as operações de implantação e troca podem falhar com um erro.

Como saber se o Cache Local se aplica ao meu aplicativo?

Se o seu aplicativo precisa de um repositório de conteúdo confiável e de alto desempenho, não usa o repositório de conteúdo para gravar dados críticos em runtime e tem menos de 2 GB de tamanho total, a resposta é sim! Para obter o tamanho total das pastas /siteextensions e /site, você pode usar a extensão de site "Uso de Disco de Aplicativos Web do Azure."

Como saber se meu site passou a usar o cache local?

Se estiver usando o recurso de Cache Local com os Ambientes de Preparo, a operação de permuta não é concluída até que o Cache Local seja aquecido. Para verificar se o seu site está em execução no cache local, verifique a variável de ambiente do processo de trabalho WEBSITE_LOCALCACHE_READY. Use as instruções descritas na página variável de ambiente do processo de trabalho para acessar as variáveis de ambiente do processo de trabalho em várias instâncias.

Acabei de publicar novas alterações, mas meu aplicativo parece não tê-las. Por quê?

Se o seu aplicativo usar o Cache Local, será necessário reiniciar o site para obter as últimas alterações. Não quer publicar alterações em um site de produção? Confira as opções de slot na seção anterior de práticas recomendadas.

Observação

A opção de implantação Executar a partir do pacote não é compatível com o cache local.

Onde estão meus logs?

Com o cache local, as pastas de logs e de dados são um pouco diferentes. No entanto, a estrutura de suas subpastas permanece a mesma, tirando o fato de as subpastas ficarem aninhadas em uma subpasta com o formato "identificador da VM exclusivo" + carimbo de data/hora.

Meu Cache Local está habilitado, mas meu aplicativo ainda é reiniciado. Por quê? Pensei que o Cache Local ajudasse com reinicializações frequentes do aplicativo.

O Cache Local ajuda a evitar reinicializações de aplicativo relacionadas ao armazenamento. No entanto, seu aplicativo ainda pode sofrer reinicializações durante atualizações de infraestrutura planejadas da VM. A quantidade de reinicializações de aplicativo gerais que você enfrenta com o Cache Local habilitado deve ser menor.

O Cache Local exclui os diretórios de serem copiados para a unidade local mais rápida?

Como parte da etapa que copia o conteúdo do armazenamento, qualquer pasta nomeada repositório é excluída. Isso ajuda com cenários em que o conteúdo do site pode conter um repositório de controle do código-fonte que pode não ser necessário na operação diária do aplicativo.

Como liberar os logs do cache local após uma operação de gerenciamento de site?

Para liberar esses logs, pare e reinicie o aplicativo. Essa ação limpará o cache antigo.

Por que o Serviço de Aplicativo começa a mostrar arquivos implantados anteriormente após uma reinicialização quando o cache local está habilitado?

Caso o Serviço de Aplicativo comece a mostrar arquivos implantados anteriormente após uma reinicialização, verifique a presença da configuração do aplicativo 'WEBSITE_DISABLE_SCM_SEPARATION=true'. Depois de adicionar essa configuração, todas as implantações via KUDU começam a gravar na VM local em vez do armazenamento persistente. As melhores práticas mencionadas acima devem ser aproveitadas, de modo que as implantações sempre sejam feitas no slot de preparo, que não tem o cache local habilitado.

Mais recursos

Referência de variáveis de ambiente e configurações de aplicativo