怎么查看 MySQL最大连接数
使用 MySQL 数据库的站点,当访问连接数过多时,就会出现 "Too many connections" 的错误。出现这种错误有两种情况,一种是网站访问量实在太大,服务器已经负担不起,此时就应该考虑负载均衡或者其它减少服务器压力的办法。另一种情况就是 MySQL 的最大连接数设置得太小,当访问量稍大就出现连接过多的错误。win7下配置PHP+Apache+Mysql运行环境
MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看
mysql> show variables like 'max_connections';
此命令将得到类似以下的输出结果:
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 2000 |
+-----------------+-------+
1 row in set (0.00 sec)
要对 mysql 的最大连接数进行修改,只需要在 my.cnf 配置文件里面修改 max_connections 的值,然后重启 mysql 就行。如果 my.ini 文件中没有找到 max_connections 条目,可自行添加以下条目
max_connections = 200
修改MySQL最大连接数
01
方法一:
02
02
03
03 进入MySQL安装目录 打开MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MySQL即可
04
04
05
05 方法二:
06
06
07
07 MySQL最大连接数默认是100客户端登录:
08
08
09
09
MySQL -uusername -ppassword
10
10
11
11 设置新的MySQL最大连接数为200:
12
12
13
13
MySQL> set GLOBAL max_connections=200
14
14
15
15 显示当前运行的Query:
16
16
17
17
MySQL> show processlist
18
18
19
19 显示当前状态:
20
20
21
21
MySQL> show status
22
22
23
23 退出客户端:MySQL> exit
24
24
25
25 查看当前MySQL最大连接数:MySQLadmin -uusername -ppassword variables
26
26
27
27 方法三:
28
28
29
29 以centos 4.4 下面的MySQL 5.0.33 手工编译版本为例说明:
30
30
31
31
vi /usr/local/MySQL/bin/MySQLd_safe
32
32
33
33 找到safe_MySQLd编辑它,找到MySQLd启动的那两行,在后面加上参数 :
34
34
35
35
-O max_connections=1500
36
36
37
37 具体一点就是下面的位置:
38
38
39
39 用红字特别说明:
40
40
41
41
then $NOHUP_NICENESS $ledir/$MySQLD
42
42
$defaults --basedir=$MY_BASEDIR_VERSION
43
43
--datadir=$DATADIR $USER_OPTION
44
44
--pid-file=$pid_file
45
45
--skip-external-locking
46
46
-O max_connections=1500
47
47
>> $err_log 2>&1 else
48
48
eval "$NOHUP_NICENESS $ledir/$MySQLD
49
49
$defaults --basedir=$MY_BASEDIR_VERSION
50
50
--datadir=$DATADIR $USER_OPTION
51
51
--pid-file=$pid_file
52
52
--skip-external-locking $args
53
53
-O max_connections=1500 >>
54
54
$err_log 2>&1"
55
55
56
56 保存。
57
57
58
58
# service MySQLd restart
59
59
# /usr/local/MySQL/bin/MySQLadmin -uroot -p variables
60
60
61
61 输入root数据库账号的密码后可看到
62
62
63
63 max_connections 1500 即新改动已经生效。
64
64
65
65 还有一种方法,
66
66
67
67 修改原代码:
68
68
69
69 解开MySQL的原代码,进入里面的sql目录修改MySQLd.cc找到下面一行:
70
70
71
71
{"max_connections", OPT_MAX_CONNECTIONS,
72
72
"The number of simultaneous clients allowed.", (gptr*) &max_connections,
73
73
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,
74
74
0},
75
75
76
76 把它改为:
77
77
78
78
{"max_connections", OPT_MAX_CONNECTIONS,
79
79
"The number of simultaneous clients allowed.", (gptr*) &max_connections,
80
80
(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,
81
81
0},
82
82
83
83 存盘退出,然后./configure ;make;make install可以获得同样的效果。以上的相关内容就是对修改MySQL最大连接数的3种方法的介绍,望你能有所收获。
最近网站出现 User 数据库名称 has already more than 'max_user_connections' active connections 的报错,网站瘫痪。有必要研究下这个问题。
max_user_connections 是 MySQL 用户连接数的最大值设置,整段语句的意思是:服务器的 MySQL 的最大连接数参数设置不足。解决方法:修改 MySQL 安装目录下 my.ini 或者 my.cnf 文件内的 max_user_connections 参数的数值,重启 MySQL 服务器。
但是正常来说,MySQL默认的100个连接数是足够的。我们需要从程序上去考虑。MySQL的默认最大连接数为100(N),实际给普通用户使用只有N-1个,保留一个连接是留给超级管理员使用的,防止连接占满了不会把管理员也踢出来。很多网站在运行的时候都会出现连接数受限现象,我认为十之八九并非是网站的真实访问量太大导致连接数超标,更多是因为我们在设计网站程序的时候采用了不合理的设计架构或数据结构引起的。非正常连接超限可能原因如下(天缘即时归纳未必完整或无错讹仅供参考):
类似人数、在线时间、浏览数等统计功能与主程序数据库同属一个数据空间时就很容易出现。
复杂的动态页尤其是用户每次浏览都涉及到多数据库或多表操作时候也很容易出现。
还有就是程序设计的不合理(比如复杂运算、等待等操作放置在数据库交互行为中间进行),或者程序存在释放BUG。
计算机硬件配置太低却安装太高版、太高配置的MySQL。
未采用缓存技术。
数据库未经过优化或表格设计及其复杂。