Em um ambiente corporativo com aplicações de missão crítica, qualquer instante de instabilidade pode causar um grande prejuízo para seu cliente, e conseqüentemente para sua empresa. Neste universo, onde todas as camadas de infra-estrutura que dão suporte ao funcionamento de suas aplicações precisam estar altamente-disponíveis, faz-se necessário tomar medidas preventivas a fim de identificar, pro-ativamente, qualquer incidente que pode acarretar em um grande problema.
Neste cenário, o papel do DBA é muito importante, pois ele pode identificar, já na camada de Banco de Dados, possíveis candidatos a problemas futuros. No entanto, ele precisa de ferramentas de apoio para tal tarefa, a fim de tornar seu trabalho produtivo e pró-ativo e não reativo, como em muitas empresas.
Sendo assim, gostaria de falar hoje sobre o nosso amigo ptop, que é uma espécie de ‘top’ para o PostgreSQL. Inspirado no top dos sistemas UNIX-like, ele permite:
- Visualizar a instrução SQL sendo executada por um processo;
- Visualizar o plano de execução de um SELECT rodando no momento;
- Visualizar os locks de um determinado processo;
- Visualizar as estatísticas das tabelas de usuário;
- Visualizar as estatísticas dos índices de usuário;
Obtendo e Instalando
A última versão estável do ptop é a 3.6.1 mas já existem versões beta disponíveis que podem ser baixadas e testadas. No nosso caso utilizaremos a última versão estável, fazendo o download e salvando em um diretório temporário, como por exemplo: /tmp.
Vamos supor que você deseja monitorar via ptop um ambiente de desenvolvimento com as seguintes características:
Nome do bando de dados: desenvolvimento
Porta: 5432
Usuário: monitor
Senha: m0n1t0r
(Para esse exemplo foi criado um usuário monitor no PostgreSQL, sem qualquer privilégio a mais, apenas de conexão ao banco)
Salve o arquivo baixado no servidor que deseja monitorar e siga os passos:
# Descompacte o arquivo ...
tar zxvf ptop-3.6.1.tar.gz
# Acesse o diretorio criado
cd ptop-3.6.1/
# Leia os arquivos README e INSTALL
# (sim eles não têm esses nomes à toa... ":D )
less README
less INSTALL
# Configure e compile o codigo
./configure && make
# Após compilar um arquivo executável sera criado
ls -la ptop
-rwxr-xr-x 1 guedes guedes 140282 2008-04-01 20:48 ptop
# Execute-o com a opção --help
./ptop --help
./ptop: invalid option -- -
Top version 3.6.1
Usage: ptop [-ISTWbcinqu] [-x x] [-s x] [-o field] [-z username]
[-p PORT] [-U USER] [-d DBNAME] [-h HOSTNAME] [number]
Visão geral do ptop
Para executar o ptop use:
./ptop -U monitor -d desenvolvimento -h localhost -W
Será solicitada a senha do usuário ‘monitor‘, informe-a corretamente. A tela que surge é semelhante a esta:
Com o ptop sendo executado, é possível ver uma série de informações úteis sobre o servidor e os processos do PostgreSQL. A semelhança do mesmo com o utilitário top do UNIX é visível e não é mera coincidência…
Principais comandos do ptop e suas telas
Obtendo ajuda no ptop: pressione ‘?’ ou ‘h’
Obtendo o plano de execução de um processo: pressione ‘E’ (maiúsculo) e digite o número de um determinado processo (PID) para visualizar o plano de execução do mesmo.
Obtendo as estatísticas das tabelas em uso: pressione ‘R’ (maiúsculo)
Obtendo as estatísticas dos índices em uso: pressione ‘X’ (maiúsculo)
Visualizando os locks de um determinado processo: pressione ‘L’ (maiúsculo) e digite o número do processo (PID) que deseja visualizar
DESAFIO 1: tente alterar a ordem de classificação dos processos (por cpu, tempo de execução ou utilização de recursos, por exemplo).
DESAFIO 2: tente alterar o número de processos a serem mostrados.
Bom, é isso! “:D