在使用MySQL数据库的时候,经常会遇到这么一个问题,就是"Can not connect to MySQL server. Too many connections" -mysql 1040错误,这是因为访问MySQL且还未释放的连接数目已经达到MySQL的上限。通常,mysql的最大连接数默认是100, 最大可以达到16384。MySQL的最大连接数,增加该值增加mysqld 要求的文件描述符的数量。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。

当前连接数

mysql> show status like 'max_used_connections';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 132   |
+----------------------+-------+
1 row in set (0.02 sec)

查看最大连接数

show variables like '%max_connections%';
-- 或者
SELECT @@MAX_CONNECTIONS;

如果max_used_connections跟max_connections相同 那么就是max_connections设置过低或者超过服务器负载上限了。max_used_connections数量就是当前连接数量。

查看当前连接明细

mysql> show processlist;
...
128 rows in set (0.03 sec)

有多少行表示有多少个连接。

查看当前mysql线程服务信息

mysql> show status like  'Threads%';
+----------------------------+--------+
| Variable_name              | Value  |
+----------------------------+--------+
| Threads_cached             | 0      |
| Threads_connected          | 121    |
| Threads_created            | 325902 |
| Threads_maintain_connected | 7      |
| Threads_running            | 1      |
+----------------------------+--------+
5 rows in set (0.02 sec)

设置最大连接数

set global max_connections=1000;--设置最大连接数为1000,可以再次查看是否设置成功

这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效,一旦mysql重启,又会恢复到初始状态。因为mysql启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。
第二种:通过修改配置文件来修改mysql最大连接数(max_connections)。
这种方式说来很简单,只要修改MySQL配置文件my.ini 或 my.cnf的参数max_connections,将其改为max_connections=1000,然后重启MySQL即可。

更多推荐