Configurar o YourKit Java Profiler

Problema

Como eu configuro o criador de perfis do YourKit Java para trabalhar com CQ3.x ou CQ4.x?

Solução

Instalar o YourKit

  1. Baixe o agente YourKit para o seu sistema operacional (veja os links na parte inferior da página).

  2. Instale o criador de perfis do YourKit.

  3. Inicie o criador de perfis do YourKit (o JDK 1.5 é necessário para executar o criador de perfis).

    • Windows: Inicie o "YourKit Java Profiler" no menu Iniciar.
    • Linux, Solaris: Execute YourKit Java Profiler Home > /bin/yjp.sh.
    • Mac OS X: Quando o aplicativo baixado é descompactado, clique no seu ícone.

Ativar criação de perfis

É possível ativar a criação de perfis diretamente em um servidor IDE ou J2EE. No entanto, pode ser melhor permitir manualmente que a criação de perfil seja independente dos servidores IDE ou J2EE. O procedimento difere de sistema operacional para sistema operacional.

SO Ação
Windows, Java de 32 bits adicionar <!YourKit Java Profiler Home>\bin\win32 para o PATH
Windows, Java de 64 bits adicionar <!YourKit Java Profiler Home>\bin\win-amd64 para o PATH
Mac OS X adicionar <!YourKit Java Profiler Home>/bin/mac para o DYLD_LIBRARY_PATH
Linux x86, Java de 32 bits adicionar <!YourKit Java Profiler Home>/bin/linux-x86-32 para o LD_LIBRARY_PATH
Linux AMD64, Java de 64 bits adicionar <!YourKit Java Profiler Home>/bin/linux-amd64 para o LD_LIBRARY_PATH
Solaris SPARC, Java de 32 bits adicionar <!YourKit Java Profiler Home>/bin/solaris-sparc-32 para o LD_LIBRARY_PATH
Solaris SPARC, Java de 64 bits adicionar <!YourKit Java Profiler Home>/bin/solaris-sparc-64 para o LD_LIBRARY_PATH
Solaris x86, Java de 32 bits adicionar <!YourKit Java Profiler Home>/bin/solaris-x86-32 para o LD_LIBRARY_PATH
Solaris x86, Java de 64 bits (AMD64) adicionar <!YourKit Java Profiler Home>/bin/solaris-x86-64 para o LD_LIBRARY_PATH

Verifique o agente do criador de perfis

Para verificar se o Java pode carregar o agente do criador de perfis, você pode chamar o seguinte comando que imprime uma descrição dos parâmetros do agente:

  • Java 5 ou 6
    • java -agentlib:yjpagent=help
  • Java 1.3 ou 1.4
    • java -Xrunyjpagent:help

Integrar a biblioteca do agente no aplicativo

Para poder fazer o perfil de um aplicativo Java, é necessário fornecer à ferramenta YourKit uma interface para o aplicativo Java. Você integra a biblioteca do agente YourKit na JVM em que o aplicativo de destino que você deseja fazer o perfil está sendo executado. Primeiro, ative a criação de perfis fornecendo o caminho para a respectiva biblioteca do agente do sistema operacional na qual a JVM está sendo executada (consulte Ativando a criação de perfis). Inclua as variáveis de ambiente de configuração no script de início do seu aplicativo.

Por exemplo, em um script de início de CQ no Linux, faça o seguinte:

#--------------------------------------------------------------------- # enables the YourKit Java Profiler #--------------------------------------------------------------------- YJP_HOME="/home/honwai/yjp-6.0.16/bin/linux-x86-32" export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$YJP_HOME

Essa configuração disponibiliza a biblioteca do agente para a JVM. Agora, é uma questão de dizer à JVM para realmente integrar essa biblioteca, que difere de acordo com a versão da JVM em uso:

Versão Java Opção JVM
1.3/1.4 java -Xrunyjpagent
5 ou mais recente java -agentlib:yjpagent

Agora você está pronto para iniciar seu aplicativo e a criação de perfis. A biblioteca de agentes imprime algumas informações para a saída padrão (no caso de CQ, é server(logs/startup.log):

[YourKit Java Profiler 6.0.16] Usando o JVMPI (Linux; JVM de 32 bits)

[YourKit Java Profiler 6.0.16]DICA: Use o Java 5 (ou mais recente) quando possível!

[YourKit Java Profiler 6.0.16] O agente do Profiler está escutando na porta 10001...

Dica: No CQ 4.2, o script serverctl tornou-se mais avançado, permitindo o fornecimento de várias opções na inicialização. Inclui a opção para iniciar a JVM com a biblioteca do agente YourKit. Configurar as variáveis de env descritas acima ainda é obrigatório, mas configurar a opção de JVM adicional não é:

linuxbox:/opt/day/cq-4.2/server# ./start --profile

Para obter uma lista completa das opções disponíveis, digite./serverctl e você obtém uma lista de todas as opções disponíveis.

Conectando com o criador de perfis do YourKit ao aplicativo

Ao iniciar um aplicativo com criação de perfis ativada, a biblioteca do agente escolhe uma porta livre disponível no sistema. Não é necessário conhecer a porta. A ferramenta YourKit pode se conectar automaticamente a um aplicativo com perfil em execução, local ou remotamente. Se encontrar mais de um aplicativo, você será solicitado a selecionar um em particular.

Também é possível especificar uma porta dedicada se as configurações de segurança locais (por exemplo, firewall) não permitirem a escolha de portas arbitrárias. Consulte a tabela a seguir para obter uma lista completa das opções que podem ser passadas para a biblioteca do agente.

Opções de biblioteca do agente

Opção Descrição
disablealloc (Apenas Java 5 e mais recente / JVMTI) Não instrumente o código de bytes com instruções necessárias para a gravação de alocação de objetos.
disablecounts (Java 5 e mais recente / somente JVMTI) Não instrumente o código de bytes com instruções necessárias para o rastreamento da CPU. Apenas a amostragem da CPU está disponível.
disablej2ee (Java 5 e mais recente / somente JVMTI) Não instrumente o código de bytes com as instruções necessárias para a criação de perfis do J2EE.
amostragem Inicie o aplicativo Java com a amostragem da CPU ativada. Você não precisa criar o perfil da CPU desde o início. Em vez disso, em muitos casos, é melhor iniciar ou interromper a medição posteriormente a partir da interface do usuário ou usando a API do Profiler.
Rastreando Inicie o aplicativo Java com o rastreamento da CPU ativado. Você não precisa criar o perfil da CPU desde o início. Em vez disso, em muitos casos, é melhor iniciar ou interromper a medição posteriormente a partir da interface do usuário ou usando a API do Profiler. Esta opção não pode ser usada em combinação com 'disablecounts'.
noj2ee Não execute a criação de perfis de alto nível do J2EE. Essa opção afeta apenas a criação de perfis da CPU iniciada com 'amostragem' ou 'rastreamento'.
alocar Inicie o aplicativo Java com a gravação da alocação de objeto iniciada. Todos os objetos são registrados. Você não precisa registrar alocações desde o início; em vez disso, você pode iniciar ou parar a gravação mais tarde a partir do Profiler ou usando a API do Profiler. Esta opção não pode ser usada em combinação com 'disablealloc'.
allocadaptive Inicie o aplicativo Java com a gravação da alocação de objeto iniciada. São registrados tantos objetos quanto possível, mantendo a sobrecarga em nível moderado. Você não precisa registrar alocações desde o início; em vez disso, você pode iniciar ou parar a gravação mais tarde a partir do Profiler ou usando a API do Profiler. Esta opção não pode ser usada em combinação com 'disablealloc'.
usedmem=<percent> Captura automática de instantâneo de memória quando a memória de heap usada atinge o limite.
onexit=memory Sempre capture o instantâneo da memória ao sair. O instantâneo da CPU é capturado automaticamente se a criação de perfis da CPU estiver ativada quando o aplicativo com perfil sair.
onexit=telemetry Capture instantâneo de telemetria na saída. Essa opção é usada automaticamente quando o aplicativo com perfil é iniciado a partir do IDE.
port=<value> Especifique a porta que o agente do criador de perfis escuta para comunicação com o Profiler. Por padrão, qualquer porta livre é escolhida.
onlylocal Permitir somente conexões locais para aplicativos com perfil
dir=<directory for="for" snapshots="snapshots"> Especifique o diretório em que os instantâneos são criados. Por padrão, o diretório <user home="home">/Snapshots é usado.
quiet Suprime as mensagens de diagnóstico que o agente do criador de perfis imprime no console.
help Imprima uma breve descrição dos parâmetros do agente.

Separe várias opções com vírgulas. Note que o Java requer : after -Xrunyjpagent but = after -agentlib:yjpagent.

Exemplos (Java 5 ou mais recente):

java -agentlib:yjpagent FooClass java -agentlib:yjpagent=onexit=memory,dir=c:\MySnapshots FooClass java -agentlib:yjpagent=usedmem=70 FooClass

Exemplos (Java 1.3 / 1.4):

java -Xrunyjpagent FooClass java -Xrunyjpagent:onexit=memory,dir=c:\MySnapshots FooClass java -Xrunyjpagent:usedmem=70 FooClass

Documentação

Uma vez instalado o criador de perfis do YourKit, há uma extensa documentação em HTML no diretório de instalação, em <!YourKit Java Profiler Home>/docs/help/index.html. Ele explica detalhadamente como integrar a biblioteca de agentes no aplicativo de destino que é o assunto da criação de perfil. Também fornece muitas opções úteis que podem ser passadas para o agente. Por exemplo:

  • gerar um heap-dump quando o aplicativo sair
  • gerar um heap-dump quando um limite for atingido

Essas opções podem ser encontradas em <!YourKit Java Profiler Home>/docs/help/agent.html.

A versão atual 7.0 não vem com documentação, você pode encontrá-la em nosso servidor de configuração:

  • \\setup\install\profiling\yjp-6.0\docs\help\index.html
Logotipo da Adobe

Fazer logon em sua conta