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

mysql> show status like 'Conn%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections   | 39    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show full processlist;
+----+-------+-----------+--------+---------+------+-------+-----------------------+
| Id | User  | Host      | db     | Command | Time | State | Info                  |
+----+-------+-----------+--------+---------+------+-------+-----------------------+
| 38 | enrmr | localhost | cakedb | Query   |    0 | NULL  | show full processlist |
+----+-------+-----------+--------+---------+------+-------+-----------------------+

Я недавно установил CakePHP, и каждый раз, когда я обновляю главную страницу (F5), количество подключений увеличивается на единицу. Также, если я снова перезапущу mysql, количество подключений все еще будет 39.

Мой вывод netstat

netstat -n -a | grep 3306
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               ESCUCHAR   

Я предполагаю, что у меня есть что-то вроде «соединений зомби mysql». Как я могу их убить? И как я могу остановить создание новых подключений каждый раз при обновлении веб-страницы? (Могу ли я иметь только одно соединение?) Спасибо.

2
Marcos 29 Дек 2012 в 18:04
Возможно, CakePHP открывает постоянные соединения, но никогда их не закрывает? Я не знаю фреймворка, чтобы сказать вам, где искать в конфиге ...
 – 
Michael Berkowski
29 Дек 2012 в 18:09
Почему вы считаете это число слишком большим?
 – 
rene
29 Дек 2012 в 18:14

1 ответ

Лучший ответ

Во-первых, Connections - это инкрементный счетчик, а не текущие соединения. Это общее количество подключений, которые были установлены и / или закрыты для экземпляра MySQL.

Если вы хотите, чтобы текущие соединения смотрели на Threads_connected, а не на Connections.

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

7
favoretti 29 Дек 2012 в 18:21
1
Я видел, как одноядерный процессор обрабатывает около 150-200 подключений в секунду, не превышая 10% ЦП (если забыть о постоянных подключениях, вероятно, это не помогло), так что это число определенно не проблема.
 – 
Amelia
29 Дек 2012 в 18:27
У нас есть коробка с 32 ядрами, максимальная мощность которых составляет 55000 одновременных подключений, так что, действительно, 39 даже близко не являются нагрузкой, за исключением того факта, что OP смотрит не на ту метрику :)
 – 
favoretti
29 Дек 2012 в 18:31
Спасибо. Я думал, что Connections - это количество текущих подключений.
 – 
Marcos
29 Дек 2012 в 20:40