IBM Cloud Docs
Gerenciamento de conexões MySQL

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

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 ao processlist_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 .