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     |
+----------------------+-------+

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.


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.



@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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.