Ajuste de MySQL
Tome esta documentación tal cual, no como una guía definitiva para ajustar MySQL. Hay mucha información y conocimiento que conviene leer antes de cambiar la configuración de MySQL. La documentación se ha creado a partir de la experiencia compartida por usuarios administradores de servidores OpenKM.
Enlaces útiles que debería leer:
- MySQL: InnoDB Performance Tuning Tips
- MySQL: The MySQL Query Cache
- InnoDB - High disk write I/O on ibdata1 file and ib_logfile0
Ejemplo uno
Sección titulada «Ejemplo uno»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 archivo my.cnf puede provocar un grave cuello de botella de rendimiento en aplicaciones con mucha actividad de lectura y escritura en la base de datos. MySQL debería disponer de suficiente RAM para poder almacenar en caché el repositorio y evitar una elevada 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 es suficiente RAM para innodb_buffer_pool_size. Cuanto mayor sea el repositorio, más memoria necesitará asignar a innodb_buffer_pool_size. Si utiliza un servidor MySQL x86, no puede asignar más de 2GB de RAM.
Información recopilada de una publicación del foro de OpenKM.
Ejemplo dos
Sección titulada «Ejemplo dos»Información del servidor
- CPU: Intel Xeon E5606 @2.13GHz
- RAM: 4GB
- Sistema: Windows server 2008, 64bit
- 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 un uso intensivo de E/S del 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.