IBM Cloud Docs
Gestione di MySQL Connections

Gestione di MySQL Connections

Le connessioni alla tua distribuzione IBM Cloud® Databases for MySQL utilizzano le risorse, quindi considera quante connessioni ti servono quando ottimizzi le prestazioni della tua distribuzione. MySQL utilizza un'impostazione max_connections per limitare il numero di connessioni (e le risorse utilizzate dalle connessioni) per impedire che il comportamento della connessione in modalità runaway sovraccaricando le risorse della propria distribuzione.

Puoi controllare il valore di max_connections con il tuo utente amministratore e mysql. Controlla max_connections con il tuo utente admin utilizzando un comando come:

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

Come calcolare la variabile MySQL max_connections

max_connections è un parametro di configurazione in MySQL che determina il numero massimo di connessioni simultanee che è possibile stabilire con il server di database.

MySQL max_connections formula di base

La formula di base per calcolare max_connections è:

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

Per richiamare un elenco di buffer e i loro valori, utilizzare un comando come:

SHOW VARIABLES LIKE '%buffer%';

Limiti di connessione MySQL

Al momento del provisioning, Databases for MySQL imposta il numero massimo di collegamenti al tuo database MySQL su 200. Aumentare questo valore Modifica della configurazione di MySQL.

Lasciare alcune connessioni disponibili, poiché alcune di esse sono riservate internamente per mantenere lo stato e l'integrità del database.

Limitare il numero di connessioni simultanee per qualsiasi account non amministratore. Ad esempio, l'impostazione max_user_connections=3 limita l'account utente a un massimo di tre connessioni simultanee.

Il superamento del limite di connessione per la distribuzione influirà negativamente sullo stato del database e ne causerà l'irraggiungibilità da parte delle proprie applicazioni. Una volta raggiunto il limite di connessione, qualsiasi tentativo di avviare una nuova connessione risulta in un errore.

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

Accedere alle informazioni sulle connessioni alla propria distribuzione con l'utente admin , mysqle 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    |
+-----------------------------------+------------+

Per determinare dove stanno andando le connessioni, suddividere le connessioni per database con l'aiuto della variabile threads_connected , utilizzando un comando come:

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

Per esaminare ulteriormente le connessioni, utilizzare il comando SHOW PROCESSLIST :

SHOW [FULL] PROCESSLIST;

Fine di MySQL Connections

Ogni connessione a mysqld, MySQL Server, viene eseguita in un thread separato e può essere arrestata con un'istruzione processlist_id , utilizzando un comando come:

KILL [CONNECTION | QUERY] processlist_id
  • KILL CONNECTION termina la connessione associata a processlist_id, dopo aver arrestato tutte le istruzioni che la connessione è in esecuzione.
  • KILL QUERY termina l'istruzione che la connessione sta eseguendo, ma lascia intatta la connessione stessa.

Per ulteriori informazioni, consultare MySQL Reference Manual KILL Statement.

Termina connessioni MySQL

Se la propria distribuzione raggiunge il limite di connessione o si riscontrano problemi di connessione alla propria distribuzione e si sospetta che un numero elevato di connessioni sia un problema, disconnettere (o terminare) tutte le connessioni alla propria distribuzione.

Nella UI, nella scheda Impostazioni , è presente un pulsante per End Connections per la distribuzione. Prestare attenzione, poiché interrompe tutto ciò che è collegato alla distribuzione.

Nella CLI, termina i collegamenti alla distribuzione utilizzando un comando come:

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

Puoi anche utilizzare l' APICloud Databases per eseguire l'operazione di fine di tutte le connessioni.

Pool di connessioni MySQL

Un modo per evitare il superamento del limite di connessioni e garantire che le connessioni dalle applicazioni vengano gestite in modo efficiente è tramite il pool di connessioni.

I MySQL MySQL ti consentono di connettere ed eseguire le istruzioni MySQL da un altro linguaggio o ambiente, inclusi ODBC, Java (JDBC), C + +, Python, PHP, Perl, Rubye istanze native C e MySQL integrate.

Ad esempio, il pool di connessioni con MySQL Connector/J può aumentare le prestazioni riducendo l'uso generale. MySQL Connector/Python consente anche l'ottimizzazione utilizzando il modulo mysql.connector.pooling .