JMeter es un proyecto de Apache Jakarta que puede ser utilizado como una herramienta de prueba de carga para analizar y medir el desempeño de una variedad de servicios, con énfasis en aplicaciones web.
Wikipedia
Lo primero es conocer las dependencias de JMeter, en este caso tenemos que instalar JDK, ya que funciona a través de java. Lo hacemos instalando la versión disponible desde yum o si queremos alguna concreta bajandola desde el sitio web de java:
# yum install java-1.6.0-openjdk.x86_64
Una vez instalado java, verificamos la versión y que es compatible (libre de bugs) con la versión de JMeter que vamos a utilizar:
# java -version java version "1.6.0_22" OpenJDK Runtime Environment (IcedTea6 1.10.6) (rhel-1.43.1.10.6.el6_2-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
Pasamos entonces a bajar JMeter, en lugar de compilarlo, podemos bajar directamente los binarios precompilados, de modo que únicamente tengamos que descomprimirlo y tunear un poco algún parámetro para poder empezar a utilizarlo:
# wget http://apache.rediris.es//jmeter/binaries/apache-jmeter-2.6.tgz # wget http://apache.rediris.es//jmeter/binaries/apache-jmeter-2.6.tgz.asc # wget http://www.apache.org/dist/jmeter/KEYS
Importamos las keys de Apache para verificar la integridad del archivo descargado:
# gpg --import KEYS # gpg --verify apache-jmeter-2.6.tgz.asc
Y ya podemos descomprimir y utilizar JMeter:
# tar -xzvf apache-jmeter-2.6.tgz # mv apache-jmeter-2.6 /usr/local/jmeter # cd /usr/local/jmeter/
Para un uso básico, simplemente especificamos que no vamos a utilizar GUI (-n), el plan a ejecutar (-t) y el log donde almacenar los resultados (-l):
# /bin/jmeter -n -t plans/miplandepruebas.jmx -l plans/registro_pruebas.log
Un problema común es tener problemas de memoria al ejecutar el plan, ya que los recursos asignados son insuficientes. Para modificarlo, editamos el fichero jmeter y aumentamos los límites de memoria en la variable HEAP, siempre en relación a los recursos de los que dispongamos:
# vi bin/jmeter # This is the base heap size -- you may increase or decrease it to fit your # system's memory availablity: #HEAP="-Xms512m -Xmx512m" HEAP="-Xms4096m -Xmx4096m"
Otro problema común es el de los límites de ficheros abiertos (open files) especificados en ulimit, sobre todo para pruebas de estrés importantes, deberemos adecuarlo según necesidades igualmente para la sesión en la que ejecutamos las pruebas:
# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 95066 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited