Gerenciamento de conexões MySQL
As conexões com sua implementação do IBM Cloud® Databases for MySQL usam recursos, portanto, considere quantas conexões você precisa ao ajustar o desempenho de sua implementação. O MySQL usa uma configuração max_connections
para limitar
o número de conexões (e recursos que são usados por conexões) para evitar que o comportamento da conexão runaway afete os recursos de sua implementação.
É possível verificar o valor de max_connections
com seu usuário administrativo e mysql
.
Verifique o max_connections
com o usuário admin
usando um comando como:
ibmclouddb=> SHOW max_connections;
max_connections
-----------------
200
(1 row)
Como calcular a variável MySQL max_connections
max_connections
é um parâmetro de configuração no MySQL que determina o número máximo de conexões simultâneas que podem ser estabelecidas com o servidor de banco de dados
Fórmula básica do MySQL max_connections
A fórmula básica para calcular max_connections
é:
Available RAM = Global Buffers + (Thread Buffers x `max_connections`)
Para recuperar uma lista de buffers e seus valores, use um comando como:
SHOW VARIABLES LIKE '%buffer%';
Limites de conexões MySQL
No momento do fornecimento, o Databases for MySQL configura o número máximo de conexões com o banco de dados MySQL como 200. Aumente esse valor Alterando a Configuração do MySQL.
Deixe algumas conexões disponíveis, já que um número delas é reservado internamente para manter o estado e a integridade do seu banco de dados.
Limite o número de conexões simultâneas para qualquer conta não admin. Por exemplo, configurar max_user_connections=3
restringe a conta do usuário a um máximo de três conexões simultâneas.
Exceder o limite de conexão para a sua implementação afetará negativamente o funcionamento do seu banco de dados e fará com que ele fique inalcançável por suas aplicações. Após o limite de conexão ser atingido, qualquer tentativa de iniciar uma nova conexão resulta em um erro.
FATAL: remaining connection slots are reserved for
non-replication superuser connections
Acesse as informações sobre conexões com sua implementação com o usuário 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 |
+-----------------------------------+------------+
Para determinar para onde as conexões estão indo, divida as conexões por banco de dados com a ajuda da variável threads_connected
, usando um comando como:
mysql> show status where `variable_name` = 'Threads_connected';
Para investigar melhor suas conexões, use o comando SHOW PROCESSLIST
:
SHOW [FULL] PROCESSLIST;
Terminando MySQL Conexões
Cada conexão com mysqld, o MySQL Server, é executada em um encadeamento separado e pode ser interrompida com uma instrução processlist_id
, usando
um comando como:
KILL [CONNECTION | QUERY] processlist_id
KILL CONNECTION
termina a conexão que está associada aoprocesslist_id
, após parar qualquer instrução que a conexão está em execução.KILL QUERY
termina a instrução em que a conexão está em execução, mas deixa a própria conexão intacta.
Para obter mais informações, consulte a MySQL Instrução KILL Manual de Referência.
Terminar conexões do MySQL
Se sua implementação atingir o limite de conexão ou você estiver tendo problemas para se conectar à sua implementação e suspeitar que um alto número de conexões é um problema, desconecte (ou encerre) todas as conexões para sua implementação.
Na IU, na guia Configurações, há um botão para End Connections
à sua implementação. Tome cuidado, pois ele interrompe qualquer coisa que esteja conectada à sua implementação.
Na CLI, termine as conexões com a implementação usando um comando como:
ibmcloud cdb deployment-kill-connections <deployment name or CRN>
Também é possível usar a API do Cloud Databases para executar a operação de encerramento de todas as conexões.
MySQL Conjunto de Conexões
Uma maneira de evitar exceder o limite de conexão e assegurar que as conexões de seus aplicativos estejam sendo manipuladas de forma eficiente é por meio da definição do conjunto de conexões.
MySQL Conectores permitem que você se conecte e execute instruções MySQL de outra linguagem ou ambiente, incluindo ODBC, Java (JDBC), C + +, Python, PHP, Perl, Rubye instâncias nativas C e integradas MySQL .
Por exemplo, a definição do conjunto de conexões com MySQL Connector/J pode aumentar o desempenho e reduzir o uso geral. MySQL Connector/Python também permite otimização usando o módulo mysql.connector.pooling
.