
Cualquier sysadmin que maneja algún servidor web con mysql, se ha encontrado con el siguiente mensaje de error de Mysql:
Too Many Connections
Una solución es aumentar el numero de conexiones de Mysql por un numero mas alto.
Esto se puede hacer en el siguiente archivo:
/etc/mysql/my.cnf
Al abrirlo van a encontrar lo siguiente:
max_connections = 100
Puede estar comentado, si es necesario descomentenlo y auméntenle el numero, siempre teniendo en cuenta la capacidad del servidor.
Luego de cambiar este parámetro, pueden reiniciar el servicio de mysql
/etc/init.d/mysql restart
Pueden comprobar si realmente hicieron bien los cambios entrando a la linea de comando de mysql, esto por lo general lo hacen escribiendo mysql y luego enter, claro esto estando como root. O si no les va a pedir usuario y contraseña.
Ya en la linea de comando de mysql escriben lo siguiente:
mysql> show variables;
Ahí les va a desplegar como están configuradas todas las variables de mysql.
Para este ejemplo subí el numero de conexiones máximas de mysql a 1000, y en el resultado del comando show variables me salio lo siguiente:
| max_connect_errors | 10 |
| max_connections | 1000 |
| max_delayed_threads | 20 |
| max_error_count | 64 |
Bueno, con esto confirmamos que tenemos 1000 conexiones como nuevo limite de mysql.
Otro punto que he notado, es que al subirle las conexiones maximas a mysql, sigue dando el error, de Too Many Connections.
Este error sucede con servidores con alto trafico, encontré una manera de evitar esto, sin afectar tanto el performance del sitio, incluso puede tener hasta mejor rendimiento. Siempre antes de hacer este cambio hablen con el programador de la pagina para estar seguro que no le afecte en algo.
En el archivo /etc/php5/apache/php.ini, van a encontrar los siguientes parametros:
[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = On
Yo lo pongo en off,
[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = Off
Tambien edito el archivo /etc/mysql/my.cnf
Y habilito la siguiente variable:
thread_cache = 16
Con esto ya no me siguio dando el error ya que no deja conexiones persistentes abiertas.
Yo uso una aplicacion en VB y el mensaje me sale ahi pues deberia de hacer tal como lo explicas? u otra manera
No existe alguna ecuación en la cual tu calcule el nivel de afectación del sistema al incrementar el numero de conexión?
@Yenin
En base a mi experiencia depende mucho de los tamaños de las tablas y de que tan optimizadas esten las bases de datos. Si para encontrar un dato el sistema tiene que leer una tabla que pesa mas de 10 gigas de espacio. Ten por seguro que hasta con un dual quad core se va a tardar bastante tiempo.
Saludos.
hola yo encontre una manera mas rapida de aumentar las connecciones:
ingresas a la base de datos mysql
set global max_connections=1000;
y te cambia la configuracion de las conecciones.
Me estaba volviendo loco con la cantidad de conexiones que se generaban en el servidor mysql cada vez que se actualizaba mi sitio joomla, con los tips que diste se solucionó sin necesidad de aumentar las max_connections
Gracias TOTALES
[php.ini]
mysql.allow_persistent = Off
[my.conf]
thread_cache = 16