IBM Cloud Docs
Gestión de conexiones de MySQL

Gestión de conexiones de MySQL

Las conexiones con el despliegue de IBM Cloud® Databases for MySQL utilizan recursos, por lo que debe tener en cuenta cuántas conexiones necesita al ajustar el rendimiento del despliegue. MySQL utiliza un valor max_connections para limitar el número de conexiones (y recursos utilizados por las conexiones) para evitar que el comportamiento de las conexiones fuera de control agote los recursos del despliegue.

Puede comprobar el valor de max_connections con el usuario administrativo y mysql. Compruebe max_connections con el usuario admin utilizando un mandato como:

ibmclouddb=> SHOW max_connections;
 max_connections
-----------------
 200
(1 row)

Cómo calcular la variable MySQL max_connections

max_connections es un parámetro de configuración en MySQL que determina el número máximo de conexiones simultáneas que se pueden establecer con el servidor de bases de datos.

Fórmula básica de MySQL max_connections

La fórmula básica para calcular max_connections es:

Available RAM = Global Buffers + (Thread Buffers x `max_connections`)

Para recuperar una lista de almacenamientos intermedios y sus valores, utilice un mandato como:

SHOW VARIABLES LIKE '%buffer%';

Límites de conexión de MySQL

Cuando se suministra, Databases for MySQL establece el número máximo de conexiones a la base de datos MySQL en 200. Aumente este valor Cambiando la configuración de MySQL.

Deje algunas conexiones disponibles, ya que algunas se reservan internamente para mantener el estado y la integridad de la base de datos.

Limite el número de conexiones simultáneas para cualquier cuenta no administrativa. Por ejemplo, el establecimiento de max_user_connections=3 restringe la cuenta de usuario a un máximo de tres conexiones simultáneas.

Si se supera el límite de conexiones para el despliegue, el estado de la base de datos se verá afectado negativamente y las aplicaciones no podrán alcanzarlo. Una vez alcanzado el límite de conexión, cualquier intento de iniciar una nueva conexión dará como resultado un error.

FATAL: remaining connection slots are reserved for
non-replication superuser connections

Acceda a información sobre las conexiones al despliegue con el usuario de admin , mysqly SHOW GLOBAL STATUS.

mysql> SHOW GLOBAL STATUS;
+-----------------------------------+------------+
| Variable_name                     | Value      |
+-----------------------------------+------------+
| Aborted_clients                   | 0          |
| Aborted_connects                  | 0          |
| Bytes_received                    | 155372598  |
| Bytes_sent                        | 1176560426 |
...
| Connections                       | 30023      |
| Created_tmp_disk_tables           | 0          |
| Created_tmp_files                 | 3          |
| Created_tmp_tables                | 2          |
...
| Threads_created                   | 217        |
| Threads_running                   | 88         |
| Uptime                            | 1389872    |
+-----------------------------------+------------+

Para determinar hacia dónde van las conexiones, divida las conexiones por base de datos con la ayuda de la variable threads_connected , utilizando un mandato como:

mysql> show status where `variable_name` = 'Threads_connected';

Para investigar más a fondo las conexiones, utilice el mandato SHOW PROCESSLIST :

SHOW [FULL] PROCESSLIST;

Finalizando MySQL Connections

Cada conexión con mysqld, MySQL Server, se ejecuta en una hebra independiente y se puede detener con una sentencia processlist_id , utilizando un mandato como:

KILL [CONNECTION | QUERY] processlist_id
  • KILL CONNECTION finaliza la conexión que está asociada con el processlist_id, después de detener cualquier sentencia en la que se esté ejecutando la conexión.
  • KILL QUERY finaliza la sentencia en la que se ejecuta la conexión, pero deja intacta la propia conexión.

Para obtener más información, consulte la publicación MySQL Reference Manual KILL Statement.

Finalizar MySQL Connections

Si el despliegue alcanza el límite de conexiones o tiene problemas para conectarse al despliegue y sospecha que un gran número de conexiones es un problema, desconecte (o finalice) todas las conexiones al despliegue.

En la interfaz de usuario, en la pestaña Valores, hay un botón para End Connections en el despliegue. Tenga cuidado, ya que interrumpe cualquier cosa que esté conectada al despliegue.

En la CLI, finalice las conexiones con el despliegue utilizando un mandato como:

ibmcloud cdb deployment-kill-connections <deployment name or CRN>

También puede utilizar la API de Cloud Databases para llevar a cabo la operación de finalizar todas las conexiones.

Agrupación de conexiones MySQL

Una manera de evitar que se supere el límite de conexiones y garantizar que las conexiones de las aplicaciones se gestionan de forma eficiente es a través de la agrupación de conexiones.

MySQL Conectores le permite conectar y ejecutar sentencias MySQL desde otro lenguaje o entorno, incluyendo instancias de ODBC, Java (JDBC), C++, Python, PHP, Perl, Rubyy C nativas e incorporadas de MySQL .

Por ejemplo, la agrupación de conexiones con MySQL Connector/J puede aumentar el rendimiento al tiempo que se reduce el uso general. MySQL Connector/Python también permite la optimización utilizando el módulo mysql.connector.pooling .