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
, mysql
e 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 aprocesslist_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
.