Práticas recomendadas para testes de desempenho best-practices-for-performance-testing
Introdução introduction
O teste de desempenho é uma parte importante de qualquer implantação do AEM. Dependendo dos requisitos do cliente, o teste de desempenho pode ser executado nas instâncias de publicação, instâncias de autor ou ambas.
Esta documentação descreve as estratégias e metodologias gerais de execução de testes de desempenho e algumas das ferramentas disponibilizadas pelo Adobe para ajudar no processo. Por fim, leia uma análise das ferramentas disponíveis no AEM 6 para auxiliar no ajuste do desempenho, tanto da perspectiva da análise de código quanto da configuração do sistema.
Simulação da realidade simulating-reality
Ao fazer testes de desempenho, certifique-se de imitar um ambiente de produção o mais próximo possível. Embora essa tarefa possa, muitas vezes, ser difícil, é imperativo garantir a precisão desses testes. Ao trabalhar na criação de testes de desempenho, é importante levar em consideração os seguintes pontos:
- Conteúdo semelhante à produção
Muitas medidas de desempenho no AEM, como o tempo de resposta da consulta, podem ser afetadas pelo tamanho do conteúdo no sistema. É importante garantir que o ambiente de teste tenha uma cópia dos dados de produção o mais próxima possível.
- Código de produção
A versão do AEM e os hotfixes implantados na produção devem ser os mesmos no ambiente de teste. Também é importante testar a versão do código implantada na produção.
- Configuração de rede e hardware semelhantes a produção
Os testes não têm sentido sem um ambiente que se assemelhe o mais possível à produção. Idealmente, as especificações de hardware, as interfaces de rede, os balanceadores de carga e a CDN devem ser idênticas à produção no ambiente de teste.
- Carga de produção
Muitos problemas de desempenho não são observados até que o sistema esteja sobrecarregado. Bons testes de desempenho devem simular a carga que os sistemas de produção estão sob no pico.
Definição de Metas setting-goals
Antes de começar o teste de desempenho, é necessário definir requisitos não funcionais para especificar a carga e os tempos de resposta. Se estiver migrando de um sistema existente, verifique se os tempos de resposta são semelhantes aos valores atuais de produção. Para carga, é melhor pegar o pico de carga atual e dobrá-lo. Isso garante que o site possa continuar a ter um bom desempenho à medida que crescer.
Ferramentas tools
Existem muitas ferramentas de teste de desempenho disponíveis comercialmente no mercado. Ao executar uma ferramenta de geração de carga, é importante garantir que os computadores que estão realizando os testes tenham largura de banda de rede suficiente. Caso contrário, uma vez que a máquina de teste atinja os limites de sua conexão, nenhuma carga adicional será gerada no ambiente em teste.
Ferramentas de teste testing-tools
-
A ferramenta Adobe Dia Difícil pode ser usada para gerar carga em instâncias AEM e coletar dados de desempenho. A equipe de engenharia do Adobe AEM usa a ferramenta para fazer o teste de carga do próprio produto AEM. Os scripts executados no Dia Difícil são configurados por meio de arquivos de propriedade e arquivos XML JMX. Para obter mais informações, consulte a documentação do Dia Difícil.
-
O AEM fornece ferramentas prontas para uso para ver rapidamente consultas, solicitações e mensagens de erro problemáticas. Para obter mais informações, consulte a seção Ferramentas de Diagnóstico da documentação do Painel de Operações.
-
O Apache fornece um produto chamado JMeter que pode ser usado para testes de desempenho e carga e comportamento funcional. É um software de código aberto e gratuito, mas tem um conjunto de recursos menor do que os produtos empresariais e uma curva de aprendizado mais acentuada. O JMeter pode ser encontrado no site do Apache em https://jmeter.apache.org/
-
Load Runner é um produto de teste de carga de nível empresarial. Uma versão de avaliação gratuita está disponível. Mais informações podem ser encontradas em https://www.microfocus.com/en-us/portfolio/performance-engineering/overview
-
Ferramentas de teste de carregamento de site como Vercara também podem ser usadas.
-
Ao testar sites móveis ou responsivos, um conjunto separado de ferramentas deve ser usado. Elas funcionam ao aumentar a largura de banda da rede, simulando conexões móveis mais lentas, como 3G ou EDGE. Entre as ferramentas mais usadas estão as seguintes:
- Condicionador de Link de Rede - fornece uma interface fácil de usar e funciona em um nível relativamente baixo na pilha de rede. Ele inclui versões para OS X e iOS;
- Charles - um aplicativo proxy de depuração da Web que, além de vários outros usos, fornece limitação de rede. São fornecidas versões para Windows, OS X e Linux®.
Ferramentas de otimização optimization-tools
Monitoramento
A documentação de Monitoramento de Desempenho é um bom recurso para ferramentas e métodos que podem ser usados para diagnosticar problemas e identificar áreas para ajuste.
Modo de Desenvolvedor na Interface para Toque
Um dos novos recursos na interface de toque do AEM 6 é o Modo de desenvolvedor. Da mesma forma que os autores podem alternar entre os modos de edição e pré-visualização, os desenvolvedores podem alternar para o modo de desenvolvedor na interface do autor. Isso permite que você veja o tempo de renderização de cada um dos componentes na página e veja os rastreamentos de pilha de quaisquer erros. Para obter mais informações sobre o modo de desenvolvedor, consulte esta apresentação do CQ Gems.
Usando o rlog.jar para ler os logs de solicitação
Para uma análise mais abrangente dos logs de solicitação em um sistema AEM, o rlog.jar
pode ser usado para pesquisar e classificar os request.log
arquivos gerados pelo AEM. Este arquivo jar está incluído com uma instalação AEM na pasta /crx-quickstart/opt/helpers
. Para obter mais informações sobre a ferramenta rlog e o log de solicitação em geral, consulte a documentação de Monitoramento e Manutenção.
A Ferramenta de Consulta de Explicação
A ferramenta de Consulta Explicativa, em Ferramentas AEM ACS, pode ser usada para exibir os índices usados ao executar uma consulta. Essa ferramenta é útil ao otimizar consultas de execução lenta.
Ferramentas PageSpeed
As ferramentas do Google PageSpeed oferecem análise do site para adesão às práticas recomendadas para o desempenho da página e um plug-in que pode ser instalado junto com o Dispatcher em uma instância do Apache para otimizações adicionais.
Consulte o Site de Ferramentas do PageSpeed.
Ambiente de criação author-environment
Realização de testes performing-tests
Para realizar testes de desempenho no ambiente de criação, é necessário simular a experiência dos autores de produção. Ou seja, as instalações do autor devem conter todos os componentes, pacotes OSGi, personalização da interface, índices personalizados e quaisquer outras adições que você tenha em vigor para as instâncias do autor de produção.
Há muitas estruturas de automação disponíveis que foram projetadas para testes de desempenho e carga. Os scripts personalizados podem ser registrados nessas ferramentas e reproduzidos para simular um número máximo de autores executando atividades semelhantes de criação e ativação de conteúdo simultaneamente. É recomendável usar a ferramenta Dia difícil para simular atividades como carregar milhares de ativos ou ativar um grande número de páginas.
Para os tipos de ambientes que têm requisitos de carregamento pesado de ativos ou criação de página, é fundamental usar ferramentas como o Dia Difícil. Isso garante que o ambiente opere com eficiência no pico de carga. O WebDAV é uma ferramenta que não requer script e também pode ser usada para carregar grandes quantidades de ativos.
Etapas específicas do MongoDB mongodb-specific-steps
Em sistemas com back-end MongoDB, o AEM fornece vários JMX MBeans que devem ser monitorados ao executar testes de carga ou desempenho:
- O MBean de Estatísticas de Cache Consolidadas. Ele pode ser acessado diretamente em:
https://server:port/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D6%2Cname%3D%22Consolidated+Cache+statistics%22%2Ctype%3D%22ConsolidatedCacheStats%22
Para o cache chamado Document-Diff, a taxa de ocorrências deve ser superior a .90
. Se a taxa de ocorrência ficar abaixo de 90%, é provável que você precise editar sua configuração DocumentNodeStoreService
. O suporte a produtos Adobe pode recomendar configurações ideais para seu ambiente.
- O Mbean De Estatísticas Do Repositório Oak. Ele pode ser acessado diretamente em:
https://server:port/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D16%2Cname%3D%22Oak+Repository+Statistics%22%2Ctype%3D%22RepositoryStats%22
A seção ObservationQueueMaxLength mostra o número de eventos na fila de observação do Oak nas últimas horas, minutos, segundos e semanas. Encontre o maior número de eventos na seção "por hora". Comparar este número à configuração oak.observation.queue-length
. Se o número mais alto mostrado para a fila de observação exceder a configuração queue-length
:
- Crie um arquivo chamado:
com.adobe.granite.repository.impl.SlingRepositoryManager.cfg
contendo o parâmetrooak.observation.queue‐length=50000
- Coloque-o na pasta /crx-quickstart/install.
A configuração padrão é 10.000, mas a maioria das implantações deve elevá-la para 20.000 ou 50.000.
Ambiente de publicação publish-environment
Realização de testes performing-tests-1
A parte mais importante de uma implantação que deve estar sujeita a testes de carga é o ambiente de publicação ou Dispatcher voltado para o usuário final.
Ferramentas de teste automatizado de terceiros podem ser usadas para testar o desempenho do site. Essas ferramentas permitem registrar as etapas que os usuários passam no site e executar muitas dessas sessões ao mesmo tempo para simular a carga típica de um site de produção.
A maioria dos sites de produção tem otimizações em vigor, como o armazenamento em cache do Dispatcher e uma rede de entrega de conteúdo em vigor. Ao testar, verifique se essas otimizações também estão disponíveis para o ambiente de teste. Além de monitorar os tempos de resposta para os usuários finais, monitore as métricas do sistema nos servidores de publicação e nos dispatchers para garantir que o sistema não seja restringido pelos recursos de hardware.
Em um sistema que não requer um alto nível de personalização, o Dispatcher deve armazenar em cache a maioria das solicitações. Como resultado, a carga na instância de publicação deve permanecer relativamente plana. Se um alto nível de personalização for necessário, é recomendável usar tecnologias como iFrames ou solicitações de AJAX para o conteúdo personalizado a fim de permitir o máximo possível de armazenamento em cache do Dispatcher.
Para testes básicos, o Apache Bench pode ser usado para medir os tempos de resposta do servidor da Web e ajudar a criar carga para medir coisas como vazamentos de memória. Veja o exemplo na Documentação de monitoramento.
Solução de problemas de desempenho troubleshooting-performance-issues
Após a execução dos testes de desempenho na instância do autor, todos os problemas devem ser investigados, diagnosticados e abordados. Você pode usar várias ferramentas e técnicas ao executar análises e resolver problemas:
-
Você pode inspecionar o log de Desempenho da Solicitação no Painel de Operações. Essa ferramenta pode ser usada para identificar solicitações de página lentas
-
Analisar consultas de execução lenta com a Ferramenta de desempenho da consulta
-
Verifique se há erros ou avisos no log de erros. Para obter mais informações, consulte Log.
-
Monitore recursos de hardware do sistema, como utilização de memória e CPU, E/S de disco ou E/S de rede. Esses recursos geralmente são as causas dos gargalos de desempenho.
-
Otimize a arquitetura das páginas e como elas são endereçadas para minimizar o uso de parâmetros de URL para permitir o máximo de armazenamento em cache possível.
-
Siga a documentação da Otimização de Desempenho e das Dicas de ajuste de desempenho.
-
Se houver problemas com a edição de determinadas páginas ou componentes em instâncias de autor, use o Modo de desenvolvedor da interface para toque para inspecionar a página em questão. Isso fornece um detalhamento de cada área de conteúdo na página e seu tempo de carregamento.
-
Reduza todos os JS e CSS no site. Veja esta postagem do blog.
-
Elimine o CSS e o JS incorporados dos componentes. Eles devem ser incluídos e minificados com as bibliotecas do lado do cliente para minimizar o número de solicitações necessárias para renderizar a página.
-
Para inspecionar as solicitações do servidor e ver quais estão demorando mais, use ferramentas de navegador, como a guia Rede do Chrome.
Depois que as áreas problemáticas são identificadas, o código do aplicativo pode ser inspecionado quanto a otimizações de desempenho. Qualquer recurso de AEM pronto para uso que não esteja funcionando corretamente pode ser tratado com Suporte para Adobe.