Configurar MySQL para utilizar DualCore con Multiprocesamiento simétrico (SMP)

4 Comments

Esta es un facil guia para conocer cuales directivas o parametros de la configuracion de MySQl (my.cnf) debemos cambiar para activar la funcion de  multi thread en servidores de bases de datos en MySQL.

Si ejecutan el comando top en su sistema linux, podran ver como MySQL utiliza como maximo el 100% de procesador. Lo que haremos es aumentar la disponibilidad de procesadores o CPUs independientes para el proceso de MySQL.

Tomemos como ejemplo un servidor pequeño, con 4GB de ram y procesadores Xeon Duales. Como observacion la configuracion a continuacion se debe a que el servidor no es exclusivo para bases de datos, entonces tiene que compartir la memoria y recursos con otros servicios.

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-locking
skip-innodb
query_cache_limit=1M
query_cache_size=32M
query_cache_type=1
max_connections=900
interactive_timeout=100
wait_timeout=100
connect_timeout=10
thread_cache_size=128
key_buffer=200M
join_buffer=1M
max_allowed_packet=16M
table_cache=1536
sort_buffer_size=1M
read_buffer_size=1M
read_rnd_buffer_size=1M
max_connect_errors=10
# A continuacion la variable para aumentar los hilo de concurrencia
thread_concurrency=4
myisam_sort_buffer_size=64M
#log-bin
server-id=1

Como pueden ver el parametro que ingresamos en thread_concurrency lo obtenemos al multiplicar nuestros procesadores fisicos por 2 y de esa forma activamos los beneficios de multiples procesos para MysQL. Es una medicion comun y aceptable.

Para aumentar el rendimiento del servidor MySQL tambien modificamos los siguientes parametros;

query_cache_limit=1M
query_cache_size=32M
query_cache_type=1

Recomendaciones para optimizar MysQL en servidores pequeños

Servidor con 512MB RAM:

thread_cache_size=50
key_buffer=40M
table_cache=384
sort_buffer_size=768K
read_buffer_size=512K
read_rnd_buffer_size=512K
thread_concurrency=2

Servidor con 1 GB ram:

thread_cache_size=80
key_buffer=150M
table_cache=512
sort_buffer_size=1M
read_buffer_size=1M
read_rnd_buffer_size=768K
thread_concurrency=2

4 Replies to “Configurar MySQL para utilizar DualCore con Multiprocesamiento simétrico (SMP)”

  1. Hola.
    En los VPS de un solo procesador pero 4 nucleos, que valor se debe poner en: thread_concurrency?

    Es normal que procesos de mysql superen el 150% de uso de CPU mirandolo a traves de TOP?

    Gracias.

  2. Excelente info, me resulto muy útil y mejoro la velocidad de respuesta de mi servidor mysql.

    Muchas Gracias!!!

Deja tus preguntas o comentarios