2012-12-29 70 views
2

最近我发现,我在我的MySQL数据库连接过多:在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的僵尸连接”。我怎样才能杀死他们?如何在每次刷新网页时停止创建新的连接? (我只能有一个连接?) 谢谢。

+0

也许CakePHP打开持久连接但从不关闭它们?我不知道框架告诉你在配置中的位置... –

+0

为什么你认为这个数字太多了? – rene

回答

7

首先,Connections是一个递增计数器,它不是当前连接。它是建立和/或关闭MySQL实例的总连接数。

如果您希望当前连接看Threads_connected,而不是Connections

其次,39个连接并不多,即使它是连接线程的总数。这一切都取决于应用程序,但只有一个CakePHP实例可能只使用一个线程。

+1

我已经看到一个单核CPU处理能力大约150-200每秒不超过10%的CPU(忘记让连接持久化可能没有帮助),所以这个数字绝对不是问题。 – Amelia

+0

我们有一个包含32个内核的盒子,在55000个并发连接上最大,所以实际上,39甚至没有接近负载,除了OP看起来错误的度量标准:) – favoretti

+0

谢谢。我认为'连接'是当前连接的数量。 –