Atualmente, um dos pontos mais complexos da análise de um ambiente produtivo é a sua performance. Garantir que os recursos sejam utilizados da melhor maneira e verificar problemas de lentidão e travamentos são atividades que exigem uma série de ações de monitoramento e diagnóstico para assegurar o funcionamento eficaz do sistema. Esta complexidade é influenciada por diversos fatores, como por exemplo, o banco de dados utilizado, a rede, a quantidade de processos e de usuários, os programas específicos, o hardware, entre outros tópicos que devem ser considerados neste tipo de análise. Apresentamos algumas ferramentas que utilizamos nestes cenários para você entender melhor como funciona este diagnóstico.
1. Ferramentas de banco de dados
Todo banco de dados tem ferramentas próprias para verificação de momento, ou seja, quais transações estão sendo executadas e o seu estado. Esta fotografia de momento serve para avaliar possíveis bloqueios e travamentos que degradam a performance. Um dos exemplos clássicos é o utilitário sp_who, utilizado no banco de dados SQL server:
Exemplo de resultado do utilitário SP_WHO
Com isso, é possível analisar os identificadores das sessões travadas, verificar as querys de origem e fazer acertos em código fonte e estrutura de banco de dados. O Fusion Platform conta internamente com um profiler de banco de dados que pode ser acessado pela url“/fusion/adm/stats/sql.jsp?enable=true”. Este utilitário coletará e apresentará um ranking das querys que mais consomem o sistema desde a subida do servidor e, com isso, as querys podem ser analisadas para melhorar seu desempenho. De moro geral, isso é feito com a criação de novos índices que se adequem às características de uso.
Resultado do Profiler SQL do Fusion
2. Monitoramento de máquina virtual Java
As máquinas virtuais Java permitem o monitoramento de seu funcionamento através da API JMX (Java Management eXtensions). Parametrizando a máquina virtual pode-se utilizar ferramentas que pluguem no ambiente e permitam coletar vários parâmetros de monitoramento.
Uma das ferramentas mais populares neste sentido é o Java MissionControl (JMC), aplicativo comercial que já acompanha as instalações de máquina virtual Java. Este foi desenvolvido pela empresa JRockIt (que posteriormente foi incorporada a Oracle) e sua licença permite avaliação em ambientes produtivos e uso livre em ambientes não produtivos. O JMC permite monitorar diversos parâmetros, como:
- Threads (o que estão executando, qual seu consumo de memória e CPU)
- Estado geral da máquina virtual (memória, processamento, etc.)
- Banco de dados (número de conexões e conexões ocupadas)
- Qualquer outro componente em execução que suporte JMX
Esta ferramenta é bastante interessante pois abre a caixa preta da máquina virtual para análise em tempo real:
Java Mission Control
3. Análise do Sistema Operacional
O sistema operacional é ponto fundamental para o correto funcionamento de um sistema, portanto, é sempre importante analisar a presença de updates e drivers atualizados e patches de segurança para garantir o correto funcionamento. As ferramentas do sistema operacional, como o gerenciador de tarefas e o monitor de recursos do Windows, permitem verificar se não existem fatores externos à aplicação influenciando o seu funcionamento (outros processos).
Monitor de Recursos do Windows
O mais comum neste sentido são outros sistemas da empresa que compartilham o servidor (como um ERP, por exemplo) e ferramentas que podem degradar a performance, como um backup em execução ou um software de antivírus mal configurado. Outro ponto importante, para ferramentas WEB principalmente, é analisar a quantidade e estado das conexões TCP/IP. Utilitários como o CurrPorts ou Netstat, do Windows, listam as conexões ativas e seu estado.
Utilitário CurrPorts
Sistemas com uma grande quantidade de conexões podem indicar uma tentativa de ataque ou então a simples necessidade de parametrizar o sistema operacional para a demanda.
4. Dimensionamento de ambiente
Geralmente chamado de Sizing e atualmente oferecido pela nossa equipe de consultoria, é um serviço baseado em metodologias de mercado (ex: TPC-C – http://www.tpc.org/tpcc/default.asp) onde é feito um estudo do ambiente funcional do cliente. Neste estudo é contabilizada a quantidade de processos, tarefas, formulários, usuários concorrentes, entre diversos outros fatores para determinar como produto final um índice que indica o hardware necessário para o funcionamento do ambiente. Assim, pode-se verificar se o hardware existente atende a demanda atual e também a projeção de crescimento futuro.
Conclusão
Neste breve artigo abordamos uma série de recursos e ferramentas que podem auxiliar na solução de problemas de desempenho e na gestão proativa do ambiente. Estes recursos são pertinentes a ambientes Fusion Platform, mas podem ser utilizados em qualquer plataforma Java. É importante citar que diagnósticos e análises de performance podem ser bastante complexos, pois temos uma imensidão de cenários possíveis que influenciam e causam impacto. Para este tipo de análise, nossos clientes podem contar com o conhecimento da nossa equipe de Consultoria e Sustentação para apoiá-los nestas demandas.