Как убить соединения MySQL - PullRequest
       2

Как убить соединения MySQL

38 голосов
/ 08 февраля 2011

Я создаю сайт с MySQL. Я использую TOAD для MySQL и вдруг не могу подключиться к базе данных, так как получаю сообщение об ошибке:

"Слишком много соединений"

Есть ли в Toad для MySQL какой-либо способ просмотреть существующие соединения, чтобы иметь возможность их уничтожить или просто закрыть все соединения вместе?

Ответы [ 5 ]

71 голосов
/ 08 февраля 2011

Нет, для этого нет встроенной команды MySQL . Существуют различные инструменты и сценарии, которые поддерживают его, вы можете разорвать некоторые соединения вручную или перезапустить сервер (но это будет медленнее).

Используйте SHOW PROCESSLIST для просмотра всех соединений и KILL идентификаторы процессов, которые вы хотите уничтожить.

Вы можете изменить настройку тайм-аута, чтобы демон MySQL уничтожал неактивные процессы сам или увеличивал количество соединений. Вы даже можете ограничить количество подключений на имя пользователя , поэтому, если процесс продолжает работать неэффективно, единственным затронутым процессом является сам процесс, и никакие другие клиенты в вашей базе данных не блокируются.

Если вы больше не можете подключиться к серверу, вы должны знать, что MySQL всегда резервирует 1 дополнительное подключение для пользователя с привилегией SUPER . Если ваш оскорбительный процесс по какой-то причине не использует имя пользователя с этой привилегией ...

Затем, после того, как вы снова получите доступ к своей базе данных, вам следует исправить процесс (веб-сайт), который порождает такое количество соединений.

29 голосов
/ 19 июня 2015
mysql> SHOW PROCESSLIST;
+-----+------+-----------------+------+---------+------+-------+---------------+
| Id  | User | Host            | db   | Command | Time | State | Info      |
+-----+------+-----------------+------+---------+------+-------+----------------+
| 143 | root | localhost:61179 | cds  | Query   |    0 | init  | SHOW PROCESSLIST |
| 192 | root | localhost:53793 | cds  | Sleep   |    4 |       | NULL      |
+-----+------+-----------------+------+---------+------+-------+----------------+
2 rows in set (0.00 sec)

mysql> KILL 192;
Query OK, 0 rows affected (0.00 sec)

ПОЛЬЗОВАТЕЛЬ 192:

mysql> SELECT * FROM exept;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

mysql> SELECT * FROM exept;
ERROR 2013 (HY000): Lost connection to MySQL server during query
6 голосов
/ 26 мая 2017

Я бы порекомендовал проверить соединения, чтобы показать, что максимальный поток соединения

show variables like "max_connections";

образец

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 13  |
+-----------------+-------+
1 row in set

Затем увеличьте его на примере

set global max_connections = 500;
4 голосов
/ 01 июня 2013

Как упомянуто выше, для этого нет специальной команды. Однако, если все эти соединения неактивны, используйте «таблицы сброса»; может освободить все те соединения, которые не активны.

0 голосов
/ 20 июня 2019

В MySQL Workbench:

Левый навигатор> Управление> Клиентские подключения

Это дает вам возможность убивать запросы и соединения.

Примечание: это не TOAD, как просил OP, но пользователи MySQL Workbench, такие как я, могут оказаться здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...