Haciendo “MySQL tunning”

Muchos programadores a la hora de testear aplicaciones en desarrollos, o administradores de servidores cuando se disponen a implementar un entorno para correr una aplicacion, suelen instalar los servicios necesarios y una vez instalado lo ejecutan y dan por terminado el proceso de instalacion de servicio.

Algo asi le ocurrio a este servidor. Adquiri un servidor HP Proliant G6 con 6GB de ram, un arreglo de discos duros no muy grande y un procesador de 8 nucleos de 2.50GHz/nucleo. Un artefacto no muy modesto comparados con otros servidores que se usan en aplicaciones de prueba.

Instale en mi servidor la distribucion RED HAT 6.0 y un entorno LAMP junto a un servidor JAVA. Realizando monitoreo con la herramienta HTOP note queen estado normal todo los recursos del servidor consumian no mas de 450Mb de memoria RAM y apenas un 0.2% de mis procesadores. Sin embargo cuando se ejecutaban mis aplicaciones, tanto web como java, el consumo de procesadores llegaba hasta un 40% mientras que el total de mi memoria no tocaba nunca los 500Mb. Siguiendo el analisis observe que la mayor parte del consumo era responsabilidad del servicio MySQL.

Buscando, indagando, "googleando", obtuve una frustracion inmensa pues la informacion es muy vaga, dispersa, nada concreto. Por lo cual opte por comerme el manual de referencia de MySQL para de esa forma tratar de hacer un tunning que permitiera a mi servidor consumir mas memoria, menos procesador y realizar consultas mas avanzadas.

Asombrado quede al modificar solo 8 parametros en mi servidor y verificar como mis aplicaciones corrian mucho mas rapido, ademas de verificar que los recursos de memoria pasaron de 450Mb a 941Mb.

He notado que el archivo de configuracion de MySQL en red hat es muy distinto al de debian, pues mientras que en debian se encuentran la mayoria de los parametros configurados, en red hat no estan ninguno, o casi ninguno.

Lo primero que hice fue acceder a:

CODE:
  1. nano /etc/my.cnf

Alli obtuve el siguiente archivo de configuracion:

CODE:
  1. [mysqld]
  2. datadir=/var/lib/mysql
  3. socket=/var/lib/mysql/mysql.sock
  4. user=mysql
  5. # Disabling symbolic-links is recommended to prevent assorted security risks
  6. symbolic-links=0
  7. [mysqld_safe]
  8. log-error=/var/log/mysqld.log
  9. pid-file=/var/run/mysqld/mysqld.pid

Asi que en primera instancia decidi documentarme sobre los parametros, que segun el manual de referencia, podrian requerir una configuracion especifica para mejor el rendimiento del servidor. De esta forma encontre 8 parametros, que como ya comente, me ayudaron a optimizar mi servidor de base de datos.

  1. key_buffer_size: Es el tamaño del buffer usado para los bloques de indices. Se recomienda que tenga un 25% del total de la memoria RAM(Si el servidor es unicamente Mysql) y que no exceda un 50% del total de la memoria.  Ref: http://dev.mysql.com/doc/refman/5.0/es/server-system-variables.html#id588838
Publicado en Tecnologica | Deja un comentario