Realizando diversas pruebas en servidores VPS, he observado que aunque no este en producción el servidor y con tan sólo dos blogs activos con apenas tráfico el consumo de memoria es muy alto, incluso llegando al 100% con el problema que esto acarrea, para encontrar el origen del error y debido a que el servidor no estaba en producción fui parando diversos servicios y observando el consumo vi que el problema lo causaba el servicio MySQL.
Para bajar el consumo de memoria en este caso vamos a optimizar el servicio mysql, para ello tenemos que editar el fichero de configuración de MySQL.
vim /etc/my.cnf
Una vez abierto el fichero insertamos los siguientes parámetros:
[mysqld] max_connections=60 max_user_connections=60 tmp_table_size=16M max_heap_table_size=4M myisam_sort_buffer_size = 4M read_buffer_size = 2M query_cache_type=1 query_cache_size=8M thread_cache_size=10 key_buffer=4M connect_timeout=50 interactive_timeout=100 wait_timeout=500 skip-locking safe-show-database skip-innodb
Con esta configuración logre bajar sustancialmente el consumo de memoria, para dejarlo en unos parámetros normales para un servidor con poco tráfico. Estos parámetros son estandar cada uno los puede personalizar como desee.
3 thoughts on - Configuración estandar MySQL para servidor VPS
Hola Javi!
A ver si tu me puedes dar una solución 😉
Estoy administrando un servidor dedicado windows bajo Plesk en el que tengo alojadas una serie de aplicaciones en ASP 3.0 (tela marinera jaja) de unos desarrollos antiguos que ha heredado mi empresa. El caso es que dichas aplicaciones se conectan al servidor MySQL mediante ODBC 3.51 creando conexiones persistentes que nse quedan ahí por los siglos de los siglos jajaja.
El problema viene cuando hay algo de trafico concurrente en esas aplicaciones, ya que al cabo de un rato terminan por ocupar las 100 conexiones disponibles y el servidor comienza a tirar el error de “Too many connections”.
Por ahora lo he solucionado poniendole un timeout a las conexiones, pero claro si hay alguien trabajando y su conexion alcaza ese timeout le tira de la aplicación.
Se te ocurre como podría saber cuales de esas conexiones están inactivas y aniquilarlas con un procedimiento automatizado?
Hola Fran:
Por lo que comentas el problema no parece residir en la configuración del servidor, sino en la programación de la aplicación ya que cada vez que se realiza una conexión al servidor conviene cerrarla una vez que has terminado la llamada, si como bien dices se te reproduce el error: “Too many connections” está claro que las conexiones de la aplicación al servidor no se llegan a cerrar por algún motivo, con lo que se debería revisar la programación de la aplicación
Lamentablemente a nivel de sistemas la mejor solución es subir como has hecho el valor “time out” o el límite de conexiones pero claro es algo temporal y una solución poco efectiva a largo tiempo ya que no conviene subir mucho estos parámetros para evitar problemas de rendimiento, pero sino es posible solventarlo de otra forma es lo único que se me ocurre.
Saludos.
Muchas gracias!
Son aplicaciones heredadas y que ni de coña es rentable cambiar ahora mismo jaja porque son unas webs muy antiguas. A ver si de aquí al año que viene las paso a PHP en algún rato muerte que nos quede.
Muchas gracias!!!