Ir al contenido
Otras versiones

Cargando…

Optimización de MySQL

Tome esta documentación tal como es, no como una guía definitiva para la optimización de MySQL. Debe leer mucha información y documentación antes de cambiar la configuración de MySQL. La documentación se ha elaborado a partir de la experiencia compartida por administradores de servidores de OpenKM.

Enlaces de interés:

Información del servidor

  • Windows Server 2008 virtualizado
  • CPU: Intel Xeon X3470 @2.93GHz
  • RAM: 7GB
  • Configuración de la JVM para Tomcat: -Xms 3072 -Xmx 3072 -XX:PermSize=256m -XX:MaxPermSize=512m
  • El repositorio ocupa 1GB

Cambios en el my.cnf de MySQL

  • innodb_buffer_pool_size=1792M
  • innodb_additional_mem_pool_size=16M
  • innodb_log_file_size=256M
  • innodb_log_buffer_size=8M

Utilizar el motor InnoDB del servidor MySQL con los parámetros de configuración por defecto del fichero my.cnf puede provocar un grave cuello de botella de rendimiento en aplicaciones con una alta actividad de lectura y escritura en la base de datos. MySQL debe disponer de suficiente RAM para almacenar en caché el repositorio y evitar una alta actividad de E/S en disco.

Los parámetros más importantes son:

  • innodb_buffer_pool_size
  • innodb_additional_mem_pool_size
  • innodb_log_file_size
  • innodb_log_buffer_size

Consideraciones El repositorio ocupa 1GB, por lo que 1792M de RAM son suficientes para innodb_buffer_pool_size. Cuanto mayor sea el repositorio, más memoria deberá asignar a innodb_buffer_pool_size. En un servidor MySQL x86 no se pueden asignar más de 2GB de RAM.

Información recopilada de mensajes del foro de OpenKM.

Información del servidor

  • CPU: Intel Xeon E5606 @2.13GHz
  • RAM: 4GB
  • Sistema: Windows Server 2008, 64 bits
  • JAVA_OPTS=-Xms256m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true -Dfile.encoding=utf-8
  • Tamaño de la base de datos: 2,5G
  • Tamaño del repositorio: 40GB
  • 100.000 nodos (carpetas + documentos)

Cambios en el my.cnf de MySQL

  • query_cache_size=0
  • table_open_cache=2000
  • tmp_table_size=16M
  • thread_cache_size=9
  • myisam_max_sort_file_size=100G
  • myisam_sort_buffer_size=32M
  • key_buffer_size=8M
  • read_buffer_size=64K
  • read_rnd_buffer_size=256K
  • sort_buffer_size=256K
  • innodb_additional_mem_pool_size=16M
  • innodb_log_buffer_size=8M
  • innodb_buffer_pool_size=1042M

Resultados

Antes de la optimización, el tiempo de inicio de sesión era de unos 45-55 segundos, con mucha actividad de E/S en el disco duro. Tras la optimización de MySQL, el inicio de sesión tarda unos 10 segundos.

Información recopilada de una publicación del foro de OpenKM.