pricing ec2 aws mysql memory-management amazon-ec2 amazon-web-services mysql-management

ec2 - Reduciendo el consumo de memoria de mysql en ubuntu @ aws microinstance



connect to mysql database aws (4)

Cambie esta configuración en el archivo de configuración de MySQL (my.cnf)

key_buffer = 8M max_connections = 30 # Limit connections query_cache_size = 8M # try 4m if not enough query_cache_limit = 512K thread_stack = 128K

Recientemente comencé un proyecto PoC en el que estamos desarrollando una pequeña aplicación web. La configuración inicial se realiza en una microinstancia de AWS. Estamos en la pila rails + mysql.

Después de instalar / ejecutar MySQL, veo que ya se han consumido más de 500 MB de RAM; dejando bastante menos para el resto de los sistemas (las microinstancias apenas tienen 620 MB de RAM).

Nuestra aplicación es bastante simple en esta etapa. ¿Puedo hacer algo para reducir la memoria consumida por el servidor MySQL?

Apreciar la ayuda.


En su archivo my.cnf:

performance_schema = 0

Y reinicia mysql. Esto debería cortar el uso de la memoria de forma espectacular si anteriormente lo tenía activado.

Edición de 2016: desde MySQL 5.7.8 en adelante, lo anterior no es suficiente para liberar su memoria de los datos del esquema de rendimiento:

A partir de MySQL 5.7.8, incluso cuando el Esquema de rendimiento está deshabilitado, continúa llenando las tablas global_variables, session_variables, global_status y session_status.

( source )

Para evitar este comportamiento, establezca show_compatibility_56 en 1 además de performance_schema . Es decir, tus cambios en my.cnf deberían verse así:

performance_schema = 0 show_compatibility_56 = 1


Solo para agregar a la otra respuesta. Hace poco tuve este problema con la microinstancia de Amazon (no con Ubuntu). El archivo my.cnf está casi vacío, así que lo que hice fue esto:

cp /etc/my.cnf /etc/my.cnf.orig cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

Edite my.cnf y habilite las líneas innodb si corresponde. Reinicie mysqld.

Además, la microinstancia no tiene intercambio, eso podría ser un problema.

SWAPFILE=/mnt/swapfile.swap dd if=/dev/zero of=$SWAPFILE bs=1M count=512 mkswap $SWAPFILE swapon $SWAPFILE

Luego, en /etc/rc.local agrega:

swapon /mnt/swapfile.swap

Para ahorrar memoria en ruby, es posible que desee usar ruby ​​enterprise:

bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) gpasswd -a root rvm source /etc/profile.d/rvm.sh rvm get head rvm reload rvm install ree rvm --default use ree


Tengo un servidor con solo 500 MB de RAM y descubrí que mysql comenzó a usar mucho RAM a medida que mis tablas aumentaban. Después de jugar con una gran cantidad de configuraciones, lo que redujo el uso de memoria para mí fue convertir todas mis tablas a MyISAM. Si no necesita las características de las tablas de conversión de innodb a MyISAM, puede ayudar bastante. Puede convertir tablas como esta:

ALTER TABLE test.mytable ENGINE=MyISAM;

Después de este cambio, descubrí que el uso de memoria disminuyó en un 20%. Para obtener una mayor reducción en el uso de la memoria, puede convertir TODAS sus tablas a MyISAM y luego desactivar el soporte de innodb en mysql. Esto redujo mi uso de memoria en un 50%.

Puedes hacer esto agregando:

[mysqld] default_storage_engine=myisam innodb=OFF

y luego reiniciando mysql.