查看mysql数据库链接数、并发数相关信息:mysql
1.show status like 'Threads%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 58 |
| Threads_connected | 57 | ###这个数值指的是打开的链接数
| Threads_created | 3676 |
| Threads_running | 4 | ###这个数值指的是激活的链接数,这个数值通常远低于connected数值
+-------------------+-------+
Threads_connected 跟show processlist结果相同,表示当前链接数。准确的来讲,Threads_running是表明当前并发数sql
2.show variables like '%max_connections%';###这是是查询数据库当前设置的最大链接数
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 1000 |
+-----------------+-------+
能够在my.ini里面设置数据库的最大链接数
max_connections 参数能够用于控制数据库的最大链接数数据库
3.show variables like '%connect%';
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| character_set_connection | latin1 |
| collation_connection | latin1_swedish_ci |
| connect_timeout | 10 |
| init_connect | |
| max_connect_errors | 10 |
| max_connections | 4000 |
| max_user_connections | 0 |
+--------------------------+-------------------+服务器
不少开发人员都会碰见”MySQL: ERROR 1040: Too many connections”的异常状况,形成这种状况的一种缘由是访问量太高,MySQL服务器抗不住,这个时候就要考虑增长从服务器分散读压力;另外一种缘由就是MySQL配置文件中max_connections值太小。并发
首先,咱们来查看mysql的最大链接数:ssl
show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)ci
其次,查看服务器响应的最大链接数:
show global status like 'Max_used_connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 2 |
+----------------------+-------+
1 row in set (0.00 sec)开发
能够看到服务器响应的最大链接数为2,远远低于mysql服务器容许的最大链接数值。
对于mysql服务器最大链接数值的设置范围比较理想的是:服务器响应的最大链接数值占服务器上限链接数值的比例值在10%以上,若是在10%如下,说明mysql服务器最大链接上限值设置太高。
Max_used_connections / max_connections * 100% = 2/151 *100% ≈ 1% 咱们能够看到占比远低于10%it
上面咱们知道怎么查看mysql服务器的最大链接数值,而且知道了如何判断该值是否合理,下面咱们就来介绍一下如何设置这个最大链接数值。
set GLOBAL max_connections=256;
show variables like '%max_connections%';
修改mysql配置文件my.ini,在[mysqld]段中添加或修改max_connections值:
max_connections=128
重启mysql服务便可。io
4.当超过最大max_user_connections,会提示max_user_connections限制数时会提示 User big already has more than 'max_user_connections
当超过max_connections,会提示too many connection
调整max_connections和max_user_connections值
max_connections #整个mysql服务器的最大链接数,若是服务器的并发链接请求量比较大,建议调高此值
max_user_connections #每一个数据库用户的最大链接,注意是以用户+主机为单位
interactive_timeout=60 #服务器关闭交互式链接前等待活动的秒数
wait_timeout=60 #服务器关闭非交互链接以前等待活动的秒数
注意: 一、响应链接数占上限链接数的85%左右,若是发现比例在10%如下,mysql服务器链接上线就设置得太高了 Max_used_connections / max_connections * 100% ≈ 85% 二、链接数据库不要用root账号,且只有root有super权限,省得链接数过多root账号都登陆不了