É possível monitorar o desempenho dos seus aplicativos com os módulos Performance Monitoring Infrastructure (PMI).
objectGridModule
O objectGridModule contém uma estatística
de tempo: tempo de resposta de transação. Uma transação é definida como uma
duração entre a chamada de método
Session.begin e a
chamada de método
Session.commit. Esta duração é rastreada como o tempo de resposta da transação. O elemento-raiz do
objectGridModule, "root", serve como ponto de entrada para as estatísticas do
WebSphere eXtreme
Scale. Este
elemento-raiz possui ObjectGrids como seus elementos-filhos, que possuem tipos de transações como seus
elementos-filhos. A estatística
de tempo de resposta está associada a cada tipo de transação.
Figura 1. Estrutura do Módulo
ObjectGridModule
O seguinte diagrama mostra um exemplo da estruturaObjectGridModule. Neste exemplo, duas instâncias ObjectGrid existem no sistema:
ObjectGrid A e ObjectGrid B. A instância ObjectGrid A possui dois tipos de
transações: A e padrão. A instância ObjectGrid B possui apenas o tipo
de transação padrão.
Figura 2. Exemplo da Estrutura do Módulo
ObjectGridModule
Os tipos de transações são definidos por desenvolvedores de aplicativos,
porque eles sabem quais tipos de transações seus aplicativos utilizam. O tipo de transação é configurando utilizando o método
Session.setTransactionType(String) a seguir:
/**
* Configura o tipo de transação para futuras transações.
*
* Quando este método é chamado, todas as futuras transações terão o mesmo tipo
* até que outro tipo de transação seja configurado. Se nenhum tipo de transação
* estiver configurado, será utilizado o tipo de transação TRANSACTION_TYPE_DEFAULT
* padrão.
*
* Os tipos de transações são utilizados principalmente para finalidade
de rastreamento de dados estatísticos.
* Os usuários podem predefinir tipos de transações que são executadas em um
* application. A idéia é categorizar transações com as mesmas características
* para uma categoria (tipo), portanto, uma estatística de tempo de resposta
de transação pode ser
* utilizada para rastrear cada tipo de transação.
*
* Este rastreamento é útil quando seu aplicativo tem diferentes tipos de
* transações.
* Entre eles, alguns tipos de transações, como transações de atualização,
têm um processamento
* mais longo que outras transações, como transações de leitura. Utilizando o tipo de
* transação, diferentes transações são rastreadas por diferentes estatísticas, portanto,
* as estatísticas podem ser mais úteis.
*
* @param tranType o tipo de transação para futuras transações.
*/
void setTransactionType(String tranType);
O exemplo a seguir configura
o tipo de transação como
updatePrice:
// Set the transaction
type to updatePrice
// The time between session.begin() and session.commit() will be
// tracked in the time statistic for "updatePrice".
session.setTransactionType("updatePrice");
session.begin();
map.update(stockId, new Integer(100));
session.commit();
A primeira linha indica que o tipo de transação subsequente
é updatePrice. Uma estatística updatePrice existe na instância
ObjectGrid que corresponde à sessão no exemplo.
Utilizando interfaces Java Management Extensions (JMX),
você pode obter o tempo de resposta da transação para transações updatePrice. Também é possível obter a estatística agregada para todos os tipos de transações na instância
ObjectGrid especificada.
mapModule
O mapModule contém três estatísticas relacionadas
aos mapas
eXtreme Scale:
- Taxa de ocorrências do mapa - BoundedRangeStatistic: Controla a taxa de ocorrências
de um mapa. A taxa de ocorrência é um valor flutuante entre 0 e 100 inclusivamente, que representa a porcentagem de ocorrências do mapa em relação a operações get do mapa.
- Número de entradas-CountStatistic: Controla o número de entradas no mapa.
- Tempo de resposta de atualização de lote do utilitário de carga-TimeStatistic: Controla o tempo de resposta que é utilizada para a operação de atualização de lote do utilitário de carga.
O elemento-raiz do mapModule, "root", serve como ponto de entrada para as estatísticas do Mapa ObjectGrid. Este elemento-raiz possui
ObjectGrids como seus elementos-filhos, que possuem mapas como seus elementos-filhos. Cada instância do mapa possui três estatísticas listadas. A estrutura mapModule
é mostrada no diagrama a seguir:
Figura 3. Estrutura do mapModule
O diagrama a seguir mostra um exemplo da estrutura mapModule:
Figura 4. Exemplo de Estrutura do Módulo mapModule
hashIndexModule
O hashIndexModule contém as seguintes
estatísticas que são relacionadas aos índices de nível de Mapa:
- Contagem de Localizações-CountStatistic: O número de chamadas para a operação find
do índice.
- Contagem de Colisões-CountStatistic: O número de colisões para a operação find.
- Contagem de Falhas-CountStatistic: O número de falhas para a operação find.
- Contagem de Resultados-CountStatistic: O número de chaves retornadas da operação find.
- Contagem de BatchUpdate-CountStatistic: O número de atualizações de lote junto a este índice. Quando o mapa correspondente é alterado de qualquer maneira, o método doBatchUpdate() do índice será chamado. Esta
estatística informará com que frequência seu índice está sendo alterado ou atualizado.
- Tempo de Duração da Operação Find-TimeStatistic: A quantidade de tempo que
a operação find leva para ser concluída
O elemento-raiz do hashIndexModule, "root", serve como ponto de entrada para as estatísticas do HashIndex. Este elemento-raiz possui ObjectGrids como seus elementos-filhos, os ObjectGrids possuem
mapas como seus elementos-filhos, que, finalmente, possuem HashIndexes como seus elementos-filhos
e nós-folhas da árvore. Cada instância do HashIndex possui três estatísticas listadas.
A estrutura
hashIndexModule é mostrada no diagrama a seguir:
Figura 5. Estrutura do Módulo hashIndexModule
O diagrama a seguir mostra um exemplo da estrutura hashIndexModule:
Figura 6. Exemplo da Estrutura do Módulo hashIndexModule
agentManagerModule
O agentManagerModule contém as
estatísticas que são relacionadas aos agentes de nível de mapa:
- Tempo de Redução: TimeStatistic - A quantidade de tempo para o agente concluir a operação reduce.
- Tempo de Duração Total: TimeStatistic - A quantidade total de tempo para o agente concluir todas as operações.
- Tempo de Serialização do Agente: TimeStatistic - A quantidade de tempo para serialização do agente.
- Tempo de Aumento do Agente: TimeStatistic - A quantidade de tempo para aumentar o agente no servidor.
- Tempo de Serialização do Resultado: TimeStatistic - A quantidade de tempo para serializar os resultados do agente.
- Tempo de Aumento do Resultado: TimeStatistic - A quantidade de tempo para aumentar os resultados do agente.
- Contagem de Falhas: CountStatistic - O número de vezes que o agente falhou.
- Contagem de Chamada: CountStatistic - O número de vezes que o AgentManager foi chamado.
- Contagem de Partições: CountStatistic - O número de partições para as quais o agente é enviado.
O elemento-raiz do agentManagerModule, "root", serve como ponto de entrada para as estatísticas do AgentManager. O
elemento-raiz possui ObjectGrids como seus elementos-filhos, os ObjectGrids possuem seus elementos-filhos, que, finalmente, possuem instâncias do AgentManager como seus elementos-filhos e nós-folhas da árvore. Cada instância do AgentManager possui estatísticas.
Figura 7. Estrutura agentManagerModule
Figura 8. Exemplo da Estrutura agentManagerModule
queryModule
O queryModule contém estatísticas relacionadas
às consultas do
eXtreme Scale:
- Tempo de Criação do Plano: TimeStatistic - A quantidade de tempo para criar o plano de consulta.
- Tempo de Execução: TimeStatistic - A quantidade de tempo para executar a consulta.
- Contagem de Execução: CountStatistic - O número de vezes que a consulta foi executada.
- Contagem de Resultados: CountStatistic - A contagem para cada conjunto de resultados de cada execução de consulta.
- FailureCount: CountStatistic - O número de vezes que a consulta falhou.
O elemento-raiz do queryModule, "root", serve como ponto de entrada para as estatísticas do Query. Este elemento-raiz
possui ObjectGrids como seus elementos-filhos, que possuem objetos Query como seus elementos-filhos e nós-folhas da árvore. Cada instância do Query possui as três estatísticas listadas.
Figura 9. Estrutura queryModule
Figura 10. Exemplo da Estrutura queryModule QueryStats.jpg