在使用MySQL数据库的时候,经常会遇到这么一个问题,就是"Can not connect to MySQL server. Too many connections" -mysql 1040错误,这是因为访问MySQL且还未释放的连接数目已经达到MySQL的上限。通常,mysql的最大连接数默认是100, 最大可以达到16384。MySQL的最大连接数,增加该值增加mysqld 要求的文件描述符的数量。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。
当前连接数
代码语言:javascript复制mysql> show status like 'max_used_connections';
---------------------- -------
| Variable_name | Value |
---------------------- -------
| Max_used_connections | 132 |
---------------------- -------
1 row in set (0.02 sec)
查看最大连接数
代码语言:javascript复制show variables like '%max_connections%';
-- 或者
SELECT @@MAX_CONNECTIONS;
如果max_used_connections跟max_connections相同 那么就是max_connections设置过低或者超过服务器负载上限了。max_used_connections数量就是当前连接数量。
查看当前连接明细
代码语言:javascript复制mysql> show processlist;
...
128 rows in set (0.03 sec)
有多少行表示有多少个连接。
查看当前mysql线程服务信息
代码语言:javascript复制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)
设置最大连接数
代码语言:javascript复制set global max_connections=1000;--设置最大连接数为1000,可以再次查看是否设置成功
这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效,一旦mysql重启,又会恢复到初始状态。因为mysql启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。 第二种:通过修改配置文件来修改mysql最大连接数(max_connections)。 这种方式说来很简单,只要修改MySQL配置文件my.ini 或 my.cnf的参数max_connections,将其改为max_connections=1000,然后重启MySQL即可。