Visão geral do Cache Local do Serviço de Aplicativo do Azure

Nota

O cache local não é suportado em aplicativos funcionais ou aplicativos do Serviço de Aplicativo em contêineres, como em Contêineres do Windows ou no Serviço de Aplicativo no Linux. Uma versão do cache local que está disponível para esses tipos de aplicativo é o Cache de Aplicativo.

O conteúdo do Serviço de Aplicativo do Azure é armazenado no Armazenamento do Azure e é exibido de maneira durável como um compartilhamento de conteúdo. Este design destina-se a trabalhar com uma variedade de aplicações e tem os seguintes atributos:

  • O conteúdo é compartilhado entre várias instâncias de máquina virtual (VM) do aplicativo.
  • O conteúdo é durável e pode ser modificado executando aplicativos.
  • Os arquivos de log e os 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 diretamente a pasta de conteúdo. Você pode visualizar imediatamente o mesmo conteúdo por meio do site do SCM e do aplicativo em execução (normalmente algumas tecnologias, como ASP.NET iniciam uma reinicialização do aplicativo em algumas alterações de arquivo para obter o conteúdo mais recente).

Embora muitos aplicativos usem um ou todos esses recursos, alguns aplicativos precisam apenas de um armazenamento de conteúdo somente leitura de alto desempenho a partir do qual possam ser executados com alta disponibilidade. Esses aplicativos podem se beneficiar de uma instância de VM 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 do seu conteúdo. Esse conteúdo é um cache de gravação, mas descarte, do conteúdo de armazenamento criado de forma assíncrona na inicialização no local. Quando o cache estiver pronto, o site será alternado para ser executado no conteúdo armazenado em cache. Os aplicativos executados no Cache Local têm os seguintes benefícios:

  • Eles são imunes a latências que ocorrem quando acessam conteúdo no Armazenamento do Azure.
  • Eles não são afetados por problemas de conexão com o armazenamento, uma vez que a cópia somente leitura é armazenada em cache no trabalhador.
  • Eles têm menos reinicializações de aplicativos devido a alterações no compartilhamento de armazenamento.

Nota

Se você estiver usando Java (Java SE, Tomcat ou JBoss EAP), então, por padrão, os artefatos Java - arquivos .jar, .war e .ear - são copiados localmente para o trabalhador. Se seu aplicativo Java depender de acesso somente leitura a outros arquivos também, defina JAVA_COPY_ALL como true para que esses arquivos também sejam copiados. Se o Cache Local estiver habilitado, ele terá 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 é iniciado. D:\local continua a apontar 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 para cada aplicativo é limitado a 1 GB por padrão, mas pode ser aumentado para 2 GB. Observe que, à medida que o tamanho do cache aumenta, levará mais tempo para carregá-lo. Se você tiver aumentado o limite de cache local para 2 GB e os arquivos copiados excederem o tamanho máximo de 2 GB, o Serviço de Aplicativo ignorará silenciosamente o cache local e fará leituras do 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 é leitura-gravação. No entanto, qualquer modificação é descartada quando o aplicativo move 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 de aplicativos. As duas subpastas são armazenadas localmente na instância da VM e copiadas para o armazenamento de conteúdo compartilhado periodicamente. Os aplicativos podem persistir arquivos de log e dados gravando-os nessas pastas. No entanto, a cópia para o armazenamento de conteúdo compartilhado é o melhor esforço, portanto, é possível que arquivos de log e dados sejam perdidos devido a uma falha repentina de uma instância de VM.
  • O streaming de logs é afetado pela cópia de melhor esforço. Você pode observar um atraso de até um minuto nos logs transmitidos.
  • No armazenamento de conteúdo compartilhado, há uma alteração na estrutura de pastas das pastas LogFiles e Data para aplicativos que usam o cache local. Agora há subpastas neles 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 onde 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 do aplicativo 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 perfeito, consulte as informações mais adiante neste artigo.
  • A exibição de conteúdo padrão do site do SCM continua sendo a do armazenamento de conteúdo compartilhado.

Habilitar cache local no Serviço de Aplicativo

Nota

O Cache Local não é suportado na camada F1 ou D1.

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

Configurar o Cache Local usando o portal do Azure

Você habilita o Cache Local por aplicativo da Web usando esta configuração do 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 armazenamento de conteúdo, bem como quaisquer logs e pastas de dados criados localmente. Para aumentar esse limite, use a configuração WEBSITE_LOCAL_CACHE_SIZEINMBdo aplicativo . Pode aumentar o tamanho até 2 GB (2000 MB) por aplicação. Observe que levará mais tempo para carregar o cache local à medida que o tamanho 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 do aplicativo adesivo com o valor Always ao seu slot de produção.WEBSITE_LOCAL_CACHE_OPTION Se você estiver usando WEBSITE_LOCAL_CACHE_SIZEINMBo , adicione-o também como uma configuração adesiva ao seu slot de produção.
  • Crie um slot de preparo e publique no slot de preparo. Normalmente, você não define o slot de preparo para usar o Cache Local para habilitar um ciclo de vida de compilação-implantação-teste contínuo para preparo se obtiver os benefícios do Cache Local para o slot de produção.
  • Teste seu site em relação ao slot de preparo.
  • Quando estiver pronto, execute uma operação de troca entre os slots de preparação e produção.
  • As configurações adesivas incluem nome e aderência a um slot. Assim, quando o slot de preparo é trocado para Produção, ele herda as configurações do aplicativo 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 do slot após a troca. Assim, quando a troca de slot estiver concluída, o slot de produção estará sendo executado no cache local.

Perguntas mais frequentes (FAQ)

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 será lido a partir do compartilhamento remoto. No entanto, as operações de implantação e permuta podem falhar com um erro. Consulte a tabela abaixo para limites de tamanho e resultados.

 Tamanho do cache local Arquivos enfrentados Resultado
≤ 2 GB ≤ Tamanho do cache local Lê a partir do cache local.
≤ 2 GB > Tamanho do cache local Lê a partir da partilha remota.
Nota: As operações de implantação e permuta podem falhar com um erro.

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

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

Como posso saber se meu site mudou para usar o Cache Local?

Se você estiver usando o recurso Cache Local com Ambientes de Preparo, a operação de permuta não será concluída até que o Cache Local seja aquecido. Para verificar se o seu site está sendo executado no Cache Local, você pode verificar a variável WEBSITE_LOCALCACHE_READYde ambiente do processo de trabalho . Use as instruções na página variável de ambiente de processo de trabalho para acessar a variável de ambiente de processo de trabalho em várias instâncias.

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

Se o seu aplicativo usa o Cache Local, você precisa reiniciar o site para obter as alterações mais recentes. Não deseja publicar alterações em um site de produção? Consulte as opções de slots na seção de práticas recomendadas anterior.

Nota

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

Onde estão os meus registos?

Com o Cache Local, seus logs e pastas de dados têm uma aparência um pouco diferente. No entanto, a estrutura de suas subpastas permanece a mesma, exceto que as subpastas são aninhadas em uma subpasta com o formato "identificador exclusivo de VM" + carimbo de data/hora.

Tenho o Cache Local habilitado, mas meu aplicativo ainda é reiniciado. Porquê? Achei que o Cache Local ajudava com reinicializações frequentes de aplicativos.

O Cache Local ajuda a impedir reinicializações de aplicativos relacionados ao armazenamento. No entanto, seu aplicativo ainda pode sofrer reinicializações durante as atualizações de infraestrutura planejadas da VM. As reinicializações gerais do aplicativo que você experimenta com o Cache Local habilitado devem ser menores.

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

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

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

Para liberar os logs de cache local, pare e reinicie o aplicativo. Esta ação limpa 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 em 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 práticas recomendadas mencionadas acima neste artigo devem ser aproveitadas, em que as implantações devem sempre ser 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