开发说应用不能连接数据库,查看数据库连接信息已经超过最大允许连接数
1 数据库系统允许的最大可连接数max_connections。该参数是可以设置的。如果不设置,默认是100。最大是16384。
2 数据库当前的连接线程数threads_connected。该参数是动态变化的。
如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝,结果如开发所说连接不了。如何修改max_connections呢?
方法1 在会话中修改
mysql> show variables like '%max_connections%';
+-----------------+-------+
| variable_name | value |
| max_connections | 151 |
1 row in set (0.00 sec)
mysql> set global max_connections=14000;
query ok, 0 rows affected (0.01 sec)
| max_connections | 14000 |
方法2 在my.conf 参数中修改,不过需要重新启动mysql 服务!不推荐
方法3 在编译数据库时就进行以centos 4.4 下面的mysql 5.0.33 手工编译版本为例说明:
vi /usr/local/mysql/bin/mysqld_safe
找到safe_mysqld编辑它,找到mysqld启动的那两行,在后面加上参数 :
-o max_connections=1500
具体一点就是下面的位置:
用红字特别说明:
then $nohup_niceness $ledir/$mysqld
$defaults --basedir=$my_basedir_version
--datadir=$datadir $user_option
--pid-file=$pid_file
--skip-external-locking
>> $err_log 2>&1 else
eval "$nohup_niceness $ledir/$mysqld
--skip-external-locking $args
-o max_connections=1500 >>
$err_log 2>&1"
保存。
# service mysqld restart
# /usr/local/mysql/bin/mysqladmin -uroot -p variables
输入root数据库账号的密码后可看到
max_connections 1500 即新改动已经生效。
还有一种方法,
修改原代码:
解开mysql的原代码,进入里面的sql目录修改mysqld.cc找到下面一行:
{"max_connections", opt_max_connections,
"the number of simultaneous clients allowed.", (gptr*) &max_connections,
(gptr*) &max_connections, 0, get_ulong, required_arg, 100, 1, 16384, 0, 1,
0},
把它改为:
(gptr*) &max_connections, 0, get_ulong, required_arg, 1500, 1, 16384, 0, 1,
存盘退出,然后./configure ;make;make install可以获得同样的效果。
方法3 摘自 http://www.cnblogs.com/nzperfect/archive/2009/06/29/1513319.html