ShareThis

martes, 19 de junio de 2012

Tuning RDS

Frecuentemente en el desarrollo de aplicaciones se encuentra un cuello de botella con la base de datos. En muchos casos las aplicaciones web demandan una alta concurrencia sobre bases de datos (frecuentemente MySQL).
Para los usuarios de Amazon AWS es frecuente el uso de RDS como alternativa para alojar la Base de Datos.

Luego de agotar el recurso de revisar que el problema no es de aplicación (ej. un bloque de código no eficiente que genera muchas consultas sobre la BD, inadecuada/inexistente implementación de cache en la aplicación), se debe recurrir a hacer tuning o afinamiento de la configuración de la BD. ¿cuales parámetros se deben ajustar? es la pregunta que surge en este punto. Para ello se debe hacer un seguimiento a través de herramientas de monitoreo. Mtop es una herramienta que puede apoyar esta actividad.



Modificar parámetros en MySQL (o RDS en AWS)
Si cuenta con acceso a la instalación de MySQL debe editar el archivo my.cnf (normalmente localizado en /etc/) y ajustar los parámetros de configuración a que haya lugar. Si utiliza RDS, debe modificar los parámetros a través de las RDS Tools (Disponibles en Amazon RDS Command Line Toolkit).

Luego de haber configurado las RDS tools,se crea un "custom parameter group" el cual es una especie de plantilla en donde 
se especifican los cambios que se desean aplicar al RDS. 
 
rds-create-db-parameter-group  --description='Parameter group for custom parameters' --engine=MySQL5.1
 
Modificar el parameter group creado previamente:
 
rds-modify-db-parameter-group   --parameters "name=max_allowed_packet,value=16776192, method=immediate"rds

NOTA:

En este comando se pueden introducir 20 cambios de variables como máximo.
Los parámetros validos aceptados para (method) son  immediate | pending-reboot.
Si el método especificado es "Immediate" y el tipo de parametro aplicado es "Dynamic" el cambio se realizara sin necesidad de reiniciar la base de datos.
Si el método especificado es "pending-reboot" o el tipo de párametro aplicado es "static", será necesario reiniciar la instancia de BD usando el comando rds-reboot-db-instance
 
 
Luego se debe aplicar el parameter group a la instancia RDS:

rds-modify-db-instance  --db-parameter-group-name= 

a continuación se debe reiniciar la instancia:
 
rds-reboot-db-instance  
 
 
Si por alguna razón se deben devolver los parametros a los valores por defecto se debe ejecutar:
 
rds-reset-db-parameter-group 
 
 

No hay comentarios:

Publicar un comentario