mysql auto ajuste de valores de conexiones máximas

11

He establecido conexiones máximas a alrededor de 2000 en el archivo my.cnf.

max_connections=2048

He actualizado a 5.5.20 y ahora veo la siguiente línea en el registro de errores.

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

¿Por qué mysql cambió el valor máximo de conexiones a 214?

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

Los archivos abiertos blandos y duros restringidos por el sistema operativo son 1024

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

El número de conexiones máximas realmente utilizadas:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+
shantanuo
fuente
1
Intente configurar los archivos abiertos ulimit más alto, como 4096.ulimit -n 4096
¿Ha cambiado el comportamiento? Tenía la versión 5.0.77 y no noté este problema. ¡Solo cuando actualicé a 5.5.20 tengo los valores cambiados!
shantanuo
1
Solo voy a preguntar lo obvio. ¿Has confirmado que la actualización no cambió tu my.cnf? Además, ¿qué sistema operativo? ¿Lo instaló un administrador de paquetes como yum? Si es así, ¿qué paquete?
Derek Downey

Respuestas:

6

Me parece bien No puede tener max_ connections más grandes que eso, porque open_files_limit es demasiado bajo. Para cada conexión, MySQL abre varios archivos. Echa un vistazo aquí .

Por lo tanto, tendrá que aumentar el límite de archivos abiertos en su sistema operativo, y luego, puede poner un valor máximo de max_ connections.

Aleksandar Vucetic
fuente
5

Este parece ser el mismo problema que respondí en stackoverflow aquí , aunque estaba usando CentOS 7 y MySQL 5.6.26

Debe aumentar el límite de sus archivos abiertos tanto para el usuario mysql (en limits.conf) como para el servicio mysql (en el archivo mysql.service)

agregue estas dos líneas a /etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

agregue esta línea a /usr/lib/systemd/system/mysqld.service (en la sección [servicio])

LimitNOFILE=65535

luego finalmente reinicie y verifique que esos mensajes de error hayan desaparecido de su registro de errores de mysql.

MNB
fuente
La otra solución es: dba.stackexchange.com/questions/32987/…
Nav
@Nav - Sí, no puede usar la cantidad máxima de conexiones configuradas si su sistema operativo no permite que mysqld use la cantidad adecuada de identificadores de archivos
MNB
Además, Ubuntu 15.04+ necesita un enfoque diferente: stackoverflow.com/questions/23977095/…
Nav
0

Esto parece ser un error en el nuevo mysqld. Yo tuve el mismo problema. Establecer max_ connections en 700 funcionó, pero si lo configuré en 900, se restableció a 214 durante el inicio. Si este fue un cambio intencionado, entonces lo habría reducido a 700 o algo similar, el valor 214 no tiene sentido.
De todos modos, subir el límite del descriptor con ulimit -n soluciona el problema.

Bart K
fuente