Artigo da SQL Magazine 33 - Teste de Capacitação do BD com o JMeter
Teste de capacitação de banco de dados com o JMeter<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Um dos fatores mais críticos na utilização de um ambiente de banco de dados diz respeito ao seu desempenho. A alteração ou inclusão de uma ou mais consultas em um sistema legado, a implantação de um novo sistema ou o crescimento inesperado no número de usuários simultâneos são fatores que podem comprometer o desempenho de um SGBD.
No que se refere à alteração de um sistema legado, não é raro a área técnica deparar-se com situações em que uma dada aplicação deixa de responder de forma adequada após uma alteração ou inclusão de uma nova operação de banco de dados. Em geral, isso ocorre quando os testes feitos no novo sistema não consideram o uso intensivo por vários usuários simultaneamente. Nesses casos, a equipe de teste ou de desenvolvimento se limitou às questões funcionais do sistema, sem se preocupar com os aspectos de desempenho e carga.
Já em relação à implantação de um novo sistema, é normal que a área técnica seja questionada quanto à capacidade do servidor de banco de dados suportar ou não uma nova aplicação. Nesse caso, é comum encontrar respostas vagas, principalmente quando não se sabe previamente quais tipos de operações de banco de dados serão utilizados pelo novo sistema.
Por fim, têm-se os fatores externos. Por exemplo, uma aplicação que vinha funcionando sem problemas passa a não responder bem somente porque o número de usuários que acessam o sistema simultaneamente aumentou. Normalmente, isso ocorre quando a aplicação não usa os recursos de banco de dados adequadamente. Nessa situação, o problema fica oculto até que um aumento inesperado de demanda ocorra.
No mercado, é possível encontrar alguns fornecedores que podem, de alguma forma, auxiliar o administrador do banco de dados em teste de capacitação. Alguns exemplos são: a Quest Software (www.quest.com), bmc Software (www.bmc.com), a CA tem o Unicenter NeuMICS Resource Management Capacity Planner Option (www.ca.com), OpenSTA (www.openSTA.org) e Apache (www.apache.org). É bom ressaltar que as ferramentas citadas aqui não têm necessariamente as mesmas funcionalidades. Isto é, algumas são bem mais abrangentes que outras e merecem um estudo detalhado para a adequação de suas necessidades. Também não é objetivo deste artigo fazer uma comparação entre elas, já que isso seria muito difícil, dado o foco que cada uma possui.
Dentre os fornecedores citados acima, será apresentado o JMeter da Apache como ferramenta de teste de capacitação de serviços de banco de dados.
O JMeter é uma aplicação implementada em Java projetada para fazer teste de carga de aplicações Cliente/Servidor. Foi originalmente projetado para realizar testes em aplicações web, mas, logo foi expandido para fazer outros tipos de testes, tais como em: servidores de banco de dados (via JDBC), servidores de FTP, JNDI, LDAP e Web Services. Com o JMeter, é possível assegurar se um SGBD está capacitado para suportar uma determinada quantidade de usuários simultâneos e estudar o seu comportamento no que tange à escalabilidade. Neste contexto, entende-se por escalabilidade a capacidade de resposta do sistema em relação à demanda de recursos exigidos dele. Aumentar a escalabilidade de um sistema de banco de dados consiste em expandir sua capacidade de processamento e armazenamento de registros, seja melhorando a capacidade do hardware ou otimizando o uso dos recursos do sistema.
O JMeter é uma ferramenta "Open Source" distribuído sobre a licença ASF (veja: http://jakarta.apache.org/jmeter/license.html e http://www.apache.org/licenses/) e seu download pode ser feito diretamente do site da Apache (http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi).
Instalação do JMeter
A versão mais recente do JMeter, usada na época da elaboração deste artigo, é a 2.1.1. Para sua instalação temos os seguintes pré-requisitos:
1. JDK 1.4 ou superior corretamente instalado. Você poderá baixar o ambiente Java diretamente na Sun Microsystem pelo endereço http://java.sun.com/j2se/1.5.0/download.jsp.
2. Um sistema operacional que execute uma JVM compatível com o ambiente descrito acima. Exemplo: Microsoft Windows (98, NT, 2000, XP), Solaris, AIX, Linux, etc.
3. Dependendo da carga que será testada, um ou mais equipamentos com boa capacidade de processamento e memória.
O JMeter vem empacotado no formato zip ou tgz (tar). Optamos por fazer o download no formato zip por ser mais conhecido pela maioria dos usuários.
O segundo passo na instalação do JMeter é descompactar o arquivo em uma pasta. Para ilustrar esse procedimento, optou-se por descompactar o JMeter no diretório raiz do disco C em um ambiente Microsoft. O nome da pasta foi jmeter (C:\jmeter). A Figura 1 ilustra a disposição de diretório após a instalação do JMeter.
Figura 1. Disposição de pastas após a instalação do JMeter.
A instalação do JMeter se limita aos procedimentos descritos acima. Isto é, nenhum ícone ou atalho é criado.
No Windows, execute o arquivo jmeter.bat localizado na pasta bin do diretório de instalação do JMeter, conforme ilustrado na Figura 2 (exemplo: c:\jmeter\bin\jmeter.bat). No Linux e outros ambientes UNIX, execute o script jmeter localizado no diretório bin de instalação (exemplo: /usr/local/jmeter/bin/jmeter).
Figura 2. Execução do JMeter no Microsoft Windows.
Após um duplo clique no arquivo jmeter.bat, o programa será apresentado, conforme mostrado na Figura 3.
Figura 3. Apresentação da tela principal do JMeter.
Caso o JMeter não funcione conforme descrito anteriormente, verifique se o seu ambiente Java está instalado corretamente.
Preparando o ambiente para teste de carga de banco de dados
Para utilizar o JMeter em um teste de stress no banco de dados, é necessária a instalação do driver JDBC implementado para seu SGBD. A maioria dos grandes fornecedores de SGBD fornece o seu próprio driver JDBC. Somente para citar alguns, têm-se: IBM DB2, ORACLE, SQL Server, Sybase, PostgreSQL, Firebird e MySQL.
Será visto neste artigo a utilização do JMeter para testes no PostgreSQL. Os mesmos conceitos servem para qualquer outro SGBD, bastando para tanto, a correta instalação do driver JDBC do SGBD a ser usado.
Instalação do driver JDBC do PostgreSQL
Os passos para instalação do driver JDBC do PostgreSQL são:
1. Faça o download do JDBC para o PostgreSQL em http://jdbc.postgresql.org/. Na época da elaboração deste artigo, a versão mais estável era 8.1 Build 405. O arquivo baixado foi "postgresql-8.1-405.jdbc3.jar".
2. Copie para o diretório c:\jmeter\lib o arquivo postgresql-8.1-405.jdbc3.jar. Se o ambiente de banco de dados for um Oracle, por exemplo, copie os arquivos ojdbc14.jar e classes12.jar para o diretório c:\jmeter\lib. Esses arquivos são distribuídos juntamente com o Oracle.
Uma vez instalado o driver JDBC, o JMeter já estará pronto fazer testes no servidor de banco de dados. Mas antes disso, é necessário elaborar e implantar um plano de teste.
Um plano de teste consiste em um conjunto de passos que serão executados com o objetivo de simular o uso do sistema e coletar métricas dessa execução. Por exemplo: