我偶尔会得到一个“连接太多”的错误,如果我使用mysql数据库
show status like 'Conn%';
我得到这样的结果
+---------------+-------+ | Variable_name | Value | +---------------+-------+ | Connections | 291 | +---------------+-------+ 1 row in set (0.00 sec)
但是如果我看看processlist
SHOW FULL PROCESSLIST;
我只看到一些真正的联系
+-----+---------+------------------------------+---------+---------+------+-------+-----------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+---------+------------------------------+---------+---------+------+-------+-----------------------+ | 28 | www | webhost01:38876 | webapp | Sleep | 2 | | NULL | | 29 | www | webhost01:53322 | webapp | Sleep | 2 | | NULL | | 30 | www | webhost01:45583 | webapp | Sleep | 2 | | NULL | | 31 | www | webhost01:35779 | webapp | Sleep | 2 | | NULL | | 32 | www | webhost01:49122 | webapp | Sleep | 2 | | NULL | | 36 | root | localhost | NULL | Query | 0 | NULL | SHOW FULL PROCESSLIST | | 126 | stats | localhost | stats | Sleep | 1056 | | NULL | +-----+---------+------------------------------+---------+---------+------+-------+-----------------------+
我怎样才能看到所有的连接? 我怀疑有些应用程序不能closures它们的连接,我该如何debugging/防止这种情况?
您要查看的SHOW STATUS值是Threads_connected 。 由于守护程序启动后, Connections仅显示累计连接数。
将Max_used_connections的值与SHOW VARIABLES值max_connections和max_user_connections进行比较通常很重要。
SHOW PROCESSLIST进程ID计数不是很高,这表明其中一个值可能会被设置得不合理的低,除非MySQL自从错误发生以来已经重新启动。
“连接”variables是一个连接计数器,当mysql服务器启动时为零。 看手册