ts wordpress,杭州优化公司多少钱,品牌建设 厚植,郑州网站建设公司招聘感谢分享#xff0c;原文地址#xff1a;http://blog.sina.com.cn/s/blog_e7e07ec30102vsba.html一、原因 产生too many connections 的直接原因是因为数据库提供的连接被全部占满了。数据库可以提供多少连接#xff0c;可以再my.cnf(linux)或者my.ini(windows)下设定。这个…感谢分享原文地址http://blog.sina.com.cn/s/blog_e7e07ec30102vsba.html 一、原因 产生too many connections 的直接原因是因为数据库提供的连接被全部占满了。数据库可以提供多少连接可以再my.cnf(linux)或者my.ini(windows)下设定。这个直接原因的上一次原因是引用程序占据连接不释放。至于为何不释放那就是各个应用程序的具体问题了。 之前 遇到这个问题时在网上找了很多关于这方面的资料发现都不能解决这方面的问题。网上的资料只能提供一个共性的解决方案无法提供个性的解决方案。而且感觉网上的资料随意转载 没说明应用环境有点不负责任。所以从这个事件中我感受到解决自己的问题还是得靠自己的逻辑分析。 在使用数据库连接池时会配置数据库连接池的最小连接数最大连接数以及默认连接数。在初始化数据库连接池时配置的最小连接数就会来占据数据库提供的连接而且这个连接是关闭tomcat之前不会被释放的。列如如果你配置的数据库连接池最小的连接数是20那么在tomcat上启动该应用程序在用Mysql的线程查看命令mysqlshow processlist;时你会发现会有21条线程。这是因为会留有一条线程用于操作。show processlist命令显示的是Thread_connected当Thread_connected与max_connections相等时在企图进行数据库连接就会出现too many connections的错误。 如果将数据库连接池交由spring管理那么每初始化一个spring管理容器就会初始化一个数据库连接池也就是以上面配置的数据库连接池最小连接数为例说会占据20个数据库提供的线程而且除非停掉tomcat否则不会释放。这种情况下若采用ClassPathApplicationContext(具体不太记得了大概就这个意思)这种方式来开启一个spring容器那么而程序又是要被周期性调度执行那么数据库的连接数无论被设为多大都没用。时间一长就会出现too many connections的错误二、解决方法打开MYSQL安装目录打开MY.INI找到max_connections在大约第93行默认是100 一般设置到5001000比较合适重启mysql,这样1040错误就解决啦。max_connections1000 在日常的MySQL服务器中wait-timeout这个参数非常有用。在部分MySQL的默认配置中可能没有wait-timeout这个参数项你在[mysqld]节中加上即可参数意义MySQL客户端的数据库连接闲置最大时间值。参数默认值默认值为8小时 。这个参数的大概意思是某一个MySQL客户端连接闲置的最大时间值即某一个MySQL客户端连接过程中闲置的最大时间到达后服务器将其关闭。MySQL服务器所支撑的最大连接数是有限的因为每一个连接、第一个表打开的操作都要消耗服务器内存理想状态是当一个MySQL客户端连接完成工作就自动断开释放内存如果你的你的网站有大量的MySQL链接请求这些连接完成SQL执行任务后空闲着啥事也不干白白占用内存资源如果 这些连接堆积起来将导致MySQL超过最大连接数从而无法新建MySQL连接有可能导致“Too many connections”的错误。可以在设置之前用show processlist查看一下MySQL状态如果你发现你的MYSQL中有大量的Sleep进程那么你真的需要设置你的wait-timeout了。依你的程序而定设置多大的值 我的设置wait-timeout10MySQL中的所有Sleep线程最多只能“睡”10秒之后就被强行关闭了。 转载于:https://www.cnblogs.com/phi76ers3/p/10414670.html