蓝忧无泪 发表于 2019-1-12 17:24:08

Too many connections

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

解决方法:

1、虚拟主机用户请联系空间商优化 MySQL 服务器的配置;
2、独立主机用户请联系服务器管理员优化 MySQL 服务器的配置,可参考:
修改 MySQL 配置文件(Windows下为 my.ini, Linux下为 my.cnf )中的参数:

    max_connections= 1000
    wait_timeout = 5



如果没有可以自行添加,修改后重启 MySQL ,如果经常性的报此错误,请您按照服务器环境搭建教程检查下你的服务器。

蓝忧无泪 发表于 2019-1-12 17:42:06

...........essage from server: "Too many connections


原因:

因为你的mysql安装目录下的my.ini中设定的并发连接数太少或者系统繁忙导致连接数被占满

解决方式:

打开MYSQL安装目录打开MY.INI找到max_connections(在大约第93行)默认是100 一般设置到500~1000比较合适,重启mysql,这样1040错误就解决啦。
max_connections=1000


mysql中通过设置wait-timeout来提高mysql的性能


在日常的MySQL服务器中,wait-timeout这个参数非常有用。
(在部分MySQL的默认配置中可能没有wait-timeout这个参数项,你在节中加上即可)
参数意义:MySQL客户端的数据库连接闲置最大时间值。
参数默认值:默认值为8小时 。
这个参数的大概意思是某一个MySQL客户端连接闲置的最大时间值,即某一个MySQL客户端连接过程中,闲置的最大时间到达后服务器将其关闭。
MySQL服务器所支撑的最大连接数是有限的,因为每一个连接、第一个表打开的操作都要消耗服务器内存,理想状态是当一个MySQL客户端连接完成工作就自动断开释放内存,如果你的你的网站有大量的MySQL链接请求,这些连接完成SQL执行任务后空闲着啥事也不干,白白占用内存资源,如果 这些连接堆积起来,将导致MySQL超过最大连接数,从而无法新建MySQL连接,有可能导致“Too many connections”的错误。
可以在设置之前用show processlist查看一下MySQL状态,如果你发现你的MYSQL中有大量的Sleep进程,哪么你真的需要设置你的wait-timeout了。依你的程序而定设置多大的值 ,我的设置wait-timeout=10,MySQL中的所有Sleep线程最多只能“睡”10秒,之后就被强行关闭了。


问题:
   如果在配置文件my.cnf中只设置参数wait_timeout=100,则重启服务器后进入,执行:
   Mysql> show variables like “%timeout%”;
会发现参数设置并未生效,仍然为28800(即默认的8个小时)。
查询资料后,要同时设置interactive_timeout和wait_timeout才会生效。
因此,只需要对MySQL的配置文件进行修改就可以了。
  1.Windows下,配置文件路径为MySQL安装的根目录中。my.ini
  2.Linux系统下,配置文件为路径/etc/my.cnf
  文件中加入
       
    wait_timeout=20
    interactive_timeout=20   保存退出,重启mysql服务。
  
 



问题1:这里为什么要同时设置interactive_timeout,wait_timeout的设置才会生效?
答:    不设置interactive_timeout,wait_timeout也会生效。

问题2:interactive的值如果设置的和wait_timeout不同,为什么Interactive_timeout会覆盖wait_timeout?
答:在交互模式下(CLIENT_INTERACTIVE),interactive_timeout才生效,非交互模式下,不生效。

问题3:在进行MySQL优化时,因为interactive_timeout决定的是交互连接的时间长短,而wait_timeout决定的是非交互连接的时间长短。如果在进行连接配置时mysql_real_connect()最后一个参数client_flag不设置为CLIENT_INTERACTIVE,是不是interactive_timeout的值不会覆盖wait_timeout?
答:可以做实验试试。

问题4:为了减少长连接的数量,在设置优化时是不是可以将interactive_timeout的值设置的大些,而wait_timeout的值设置的小些?但是问题2的描述好像又不允许这样。。。

答:如2所述,在交互模式下,interactive_timeout取代wait_timeout。这样,如果有的客户端是交互模式方式连接mysql server。那么客户端的timeout受制于interactive_timeout。如果有的客户端是非交互模式,长连接mysql server。那么客户端的timeout受制于wait_timeout。(是否是交互模式的连接,由客户端决定)

如何设置wait_timeout的值比较合理??

我的理解是:比如讲wait_timeout值设置为100s意思是说在你访问数据库的间隔超过100s服务器会与客户端断开连接,再次访问数据库则能再次建立连接。



作者:cenfei78325747
来源:CSDN
原文:https://blog.csdn.net/cenfei78325747/article/details/7854611
页: [1]
查看完整版本: Too many connections