资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

mysql怎么关闭连接数 mysql自动关闭连接

如何修改MySQL连接数超限的方法

mysql的最大连接数默认是100,

成都创新互联公司自2013年创立以来,先为铅山等服务建站,铅山等地企业,进行企业商务咨询服务。为铅山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些。

调节方法为:

1.linux服务器中

:改my.cnf中的值就行了

2.Windows服务器中(我用的):

在文件“my.ini”中找到段

[mysqld],在其中添加一行

max_connections=200###

200可以更改为想设置成的值.

然后重启"mysql"服务。

/mysqladmin所在路径/mysqladmin

-uroot

-p

variables

输入root数据库账号的密码后可看到

|

max_connections

|

1000

|

其他需注意的:

在编程时,由于用mysql语句调用数据库时,在每次之执行语句前,会做一个临时的变量用来打开数据库,所以你在使用mysql语句的时候,记得在每次调用完mysql之后就关闭mysql临时变量。

另外对于访问量大的,可以考虑直接写到文本中,根据预测的访问量,先定义假若是100个文件文件名依次为1.

txt,2.

txt

100.

txt。

MySQL如何杀掉无用连接?

错误“Too many connections”。平常碰到这个问题,我基本上是修改/etc/my.cnf的max_connections参数,然后重启数据库。但

是生产服务器上数据库又不能随便重启。

没办法,只好想办法手动去释放一些没用的连接。

登陆到MySQL的提示符下,数据show processlist这个命令,可以得到所以连接到这个服务器上的MySQL连接:

mysql show processlist;

+---------+------+---------------------+---------+---------+------+-------+-------------------+

| Id | User | Host | db | Command | Time | State | Info |

+---------+------+---------------------+---------+---------+------+-------+-------------------+

| 1180421 | ur | 202.103.96.68:49754 | test1 | Sleep | 1 | | NULL |

| 1180427 | ur | 202.103.96.68:55079 | test2 | Sleep | 1 | | NULL |

| 1180429 | ur | 202.103.96.68:55187 | testdba | Sleep | 0 | | NULL |

| 1180431 | ur | 202.103.96.68:55704 | testdba | Sleep | 0 | | NULL |

| 1180437 | ur | 202.103.96.68:32825 | test1 | Sleep | 1 | | NULL |

| 1180469 | ur | 202.103.96.68:58073 | testdba | Sleep | 0 | | NULL |

| 1180472 | ur | 83.136.93.131:47613 | test2 | Sleep | 8 | | NULL |

| 1180475 | root | localhost | NULL | Query | 0 | NULL | show PROCESSLIST |

+---------+------+---------------------+---------+---------+------+-------+-------------------+

8 rows in set (0.00 sec)

mysql

然后,你可以看到像上面这样的MySQL数据连接列表,而且每一个都会有一个进程ID号(在上表的第一列)。我们只要输入这样的命令:

mysql kill 1180421;

Query OK, 0 rows affected (0.00 sec)

mysql

其中1180421为你在进程列表里找到并且要杀掉的进程号。

产生这种问题的原因是:

连接数超过了 MySQL 设置的值,与 max_connections 和 wait_timeout 都有关系。wait_timeout 的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大。

解决方法:

修改MySQL配置文件/etc/my.cnf,设置成max_connections=1000,wait_timeout=5。如果没有此项设置可以自行添加,修改后重启MySQL服务即可。要不经常性报此错误,则要对服务器作整体性能优化

注:

为了防止发生too many connections时候无法登录的问题,mysql manual有如下的说明:

mysqld actually allows max_connections+1 clients to connect. The extra connection is reserved for use by accounts that have the SUPER privilege. By granting the SUPER privilege to administrators and not to normal users (who should not need it), an administrator can connect to the server and use SHOW PROCESSLIST to diagnose problems even if the maximum number of unprivileged clients are connected.

因此, 必须只赋予root用户的SUPER权限,同时所有数据库连接的帐户不能赋予SUPER权限。前面说到的报错后无法登录就是由于我们的应用程序直接配置的root用户

总结,解决问题的最终方法:

1.修改配置文件/etc/my.cnf,调整连接参数

2.检查程序代码,对于没有关闭的链接及时进行关闭

如何修改mysql数据库的连接数

新安装后的mysql数据库,其默认的最大连接数为100。 方法一:在mysql安装路径下,找到my.ini或者my.cnf文件,打开它找到max_connections,设置成1000; 然后重启mysql服务。 方法二:在mysql运行环境下,进入mysql命令下: mysql set global max_connections=1000; 然后关闭mysql重启它; 在./bin路径下,使用 # ./mysqladmin -uroot -p123456 variables | grep "max_connections" 看到 | max_connections | 1000 | 说明新修改的连接数已经生效了。 也可以在mysql运行环境下,执行:mysql show variables; 查看max_connections的值。 也可以在mysql运行环境下,执行:mysql show status; 查看当前活动的连接线程值,即找到threads_connected的值就是了。 方法三:编辑mysqld_safe文件: # vi /usr/local/mysql/bin/mysqld_safe 找到msyqld启动的那两行,在后面加上参数: 然后重新启动mysql服务,就OK了。

mysql too many connections 解决方法

1、mysql -u root -p 回车输入密码进入mysql 

2、show processlist; 

查看连接数,可以发现有很多连接处于sleep状态,这些其实是暂时没有用的,所以可以kill掉

3、show variables like "max_connections"; 

查看最大连接数,应该是与上面查询到的连接数相同,才会出现too many connections的情况

4、set GLOBAL max_connections=1000; 

修改最大连接数,但是这不是一劳永逸的方法,应该要让它自动杀死那些sleep的进程。

5、show global variables like 'wait_timeout'; 

这个数值指的是mysql在关闭一个非交互的连接之前要等待的秒数,默认是28800s

6、set global wait_timeout=300; 

修改这个数值,这里可以随意,最好控制在几分钟内 

7、set global interactive_timeout=500; 

修改这个数值,表示mysql在关闭一个连接之前要等待的秒数,至此可以让mysql自动关闭那些没用的连接,但要注意的是,正在使用的连接到了时间也会被关闭,因此这个时间值要合适

批量kill之前没用的sleep连接,在网上搜索的方法对我都不奏效,因此只好使用最笨的办法,一个一个kill

8、select concat('KILL ',id,';') from information_schema.processlist where user='root'; 先把要kill的连接id都查询出来

     (1)复制中间的kill id;内容到word文档

     (2)替换掉符号“|”和回车符(在word中查询^p即可查询到回车符)

     (3)把修改过的内容复制回终端,最后按回车执行


网站栏目:mysql怎么关闭连接数 mysql自动关闭连接
当前网址:http://cdkjz.cn/article/dodpoec.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220