当前位置:  数据库>mysql

解决mysql 1040错误Too many connections的方法

    来源: 互联网  发布时间:2014-10-04

    本文导语:  从官方文档知道linux上面编译安装的mysql默认的连接为100个,这样对于网站的需求来说是远远不够的。 mysql官方告诉我们需要修改max_connections的值,那么我们怎么去修改呢?有两种方法 1、修改配置文件文件 修改/etc/my.cnf这个文...

从官方文档知道linux上面编译安装的mysql默认的连接为100个,这样对于网站的需求来说是远远不够的。
mysql官方告诉我们需要修改max_connections的值,那么我们怎么去修改呢?有两种方法

1、修改配置文件文件

修改/etc/my.cnf这个文件,在[mysqld]中新增max_connections=N,如果你没有这个文件请从编译源码中的support-files文件夹中复制你所需要的*.cnf文件为到/etc/my.cnf。我使用的是my-medium.cnf,中型服务器配置。例如我的[mysqld]的内容如下
代码如下:

[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 160M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections=1000

由于对mysql还不是很熟悉,所以很多参数没有修改。哈哈。。

2、非使用mysqld脚本自动启动的用户。

修改$MYSQL_HOME/bin/mysqld_safe文件
例如:/usr/local/mysql/bin/mysqld_safe这个文件
grep -n 'max_connection' $MYSQL_HOME/bin/mysqld_safe
修改对应行号的max_connections参数值
以上方法为参考网上的做法写的。

方法二:

在PHP手册里面找关于mysql_connect和mysql_pconnect的资料,下面是在php手册中对这两个函数的描述:
mysql_connect 函数原型:
resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]])
返回:
如果成功则返回一个MySQL 连接标识,失败则返回FALSE。
描述:
mysql_connect() 建立一个到MySQL 服务器的连接。当没有提供可选参数时使用以下默认值:server = 'localhost:3306',username =
服务器进程所有者的用户名,password = 空密码。
如果用同样的参数第二次调用mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识。参数new_link 改变此行为并使
mysql_connect() 总是打开新的连接,甚至当mysql_connect() 曾在前面被用同样的参数调用过。参数client_flags 可以是以下常量的组合
:MYSQL_CLIENT_COMPRESS,MYSQL_CLIENT_IGNORE_SPACE 或者MYSQL_CLIENT_INTERACTIVE。
注: new_link 参数自PHP 4.2.0 起可用。
client_flags 参数自PHP 4.3.0 起可用。
一旦脚本结束,到服务器的连接就会被关闭。除非之前已经调用了mysql_close() 来关闭它。
mysql_pconnect :
函数原型:
resource mysql_pconnect ( [string server [, string username [, string password [, int client_flags]]]])
返回:
如果成功则返回一个正的MySQL 持久连接标识符,出错则返回FALSE。
描述:
mysql_pconnect() 建立一个到MySQL 服务器的连接。如果没有提供可选参数,则使用如下默认值:server = 'localhost:3306',
username = 服务器进程所有者的用户名,password = 空密码。client_flags 参数可以是以下常量的组合:MYSQL_CLIENT_COMPRESS,
MYSQL_CLIENT_IGNORE_SPACE 或者MYSQL_CLIENT_INTERACTIVE。
server 参数也可以包括端口号,例如"hostname:port",或者是本机套接字的的路径,例如":/path/to/socket"。
注: 对":port" 的支持是3.0B4 版添加的。
对":/path/to/socket" 的支持是3.0.10 版添加的。 两者之间的区别 :
mysql_pconnect() 和mysql_connect() 非常相似,但有两个主要区别。
首先,当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。
其次,当脚本执行完毕后到SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由mysql_pconnect() 建立的连接)。
可选参数client_flags 自PHP 4.3.0 版起可用。此种连接称为"持久的"。

小结一下,要保证你的系统不会出现Too many connections 错误,需要注意两点:
1.保证你的apache的最大进程数不超过mysql的最大连接数;
2.不要在程序里面用过多mysql_pconnect连接到同一个数据库服务器(一个就够了).这需要好的编码习惯和规范.特别是不断的给系统增加
新的功能,如果不注重系统架构和编码规范,当系统的复杂度到了一定的程度,整个系统就变得无法维护了.出现问题的时候解决起来就很麻烦了.
解决方法是修改/etc/mysql/my.cnf,添加以下一行:
set-variable = max_connections=500
或在启动命令中加上参数max_connections=500
就是修改最大连接数,然后重启mysql.默认的连接数是100,太少了,所以容易出现如题错误

以上摘自 宋利兴的专栏 以下为补充:

1.可能是mysql的max connections设置的问题
2.可能是多次insert,update操作没有关闭session,需要在spring里配置transaction支持。

解决:
1.修改tomcat里的session 的time-out时间减少为20,(不是必改项)
2.对处理量大的对数据库insert或update的操作提供transaction支持.

=======================================
下面的是解决办法:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"

原因:

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


解决方式:

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

一定要重新启动MYSQL才能生效

CMD->

net stop mysql

net start mysql

关于改变innodb_log_file_size后无法启动mysql的问题

innodb_buffer_pool_size=768M
innodb_log_file_size=256M
innodb_log_buffer_size=8M
innodb_additional_mem_pool_size=4M
innodb_flush_log_at_trx_commit=0
innodb_thread_concurrency=20
以上是对innodb引擎的初步优化, 发现是更新innodb_log_file_size=256M时候出现了问题,只要加上这个就无法启动,

后来才知道原来要STOP服务先,然后再删除原来的文件………
打开/MySQL Server 5.5/data

删除ib_logfile0, ib_logfile1........ib_logfilen
再开启选项,成功启动。


    
 
 

您可能感兴趣的文章:

  • 如何解决cannot connect to X server :0.0
  • connect失败,errno为115.请问怎么解决?
  • Lost connection to MySQL server during query的解决
  • Call to undefined function: mysql_connect这个错误怎么解决???
  • 求curl:(7) couldn't connect to host 错误解决办法
  • Oracle Connect to Idle Instance解决方法
  • Can't connect to MySQL server的解决办法
  • Connection reset by peer: JVM_recv in socket input stream read这个问题到底怎么解决??
  • connect:address family not supported by protocol该如何解决?
  • PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
  • SQL Server 2012无法连接到WMI提供程序(Cannot connect to WMI provider)解决方案
  • mysql提示Changed limits: max_open_files: 2048 max_connections: 1910 table_cache: 64的解决
  • zilong28提问:Tomcat3.2报错内容是Error occurs when connecting DB: ORA-00020: maximum number of processes(59) exceeded 我应该如何解决,先谢了
  • MYSQL不能从远程连接的一个解决方法(s not allowed to connect to this MySQL server)
  • 64位系统中IIS7运行ASP时出现ADODB.Connection 800a0e7a错误的解决方法
  • DriverManager.Connect()到sql的问题。虽然分数不多,但只要问题解决就立即给!
  • mysql too many open connections问题解决方法
  • 马上给100分!谁能解决这个简单的问题:Can't start manual transaction mode because there are cloned connections.先给20分
  • php运行提示Can't connect to MySQL server on 'localhost'的解决方法
  • Can't connect to MySQL server on 'localhost' (10048)问题解决方法
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • mysql启动错误之mysql启动报1067错误解决方法
  • windows server2008上PowerBuilder程序系统错误解决方法
  • http错误404-文件或目录未找到 错误的解决方法
  • 安装hadoop时出现内存不够及其它一些常见的hadoop错误解决办法
  • Liunx命令tar压缩出现如下错误该怎么解决?急需解决!感谢
  • linux/centos安装nginx常见错误及解决办法
  • 在inter版solaris 8上编socket程序,在read时遇到错误,错误号14,用strerror()看不到错误描述,请解决,多谢!
  • iis8.5显示ASP的详细错误信息500 内部服务器错误解决方法
  • 解决服务器应用程序不可用,错误:0x80070005拒绝访问的错误
  • vsftpd的530 Login incorrect错误解决方法 vsftpd登录错误
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • secureCRT下Linux终端汉字乱码解决方法
  • 实现在同一方法中获取当前方法中新赋值的session值解决方法
  • andriod中UIScrollView无法正常滚动的解决方法
  • 解决 select 挡住div的解决方法
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • GET方法URL中传递中文参数乱码的解决方法
  • Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
  • asp.net post方法中参数取不出来的解决方法
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • MYSQL安装时解决要输入current root password的解决方法
  • 多jdk环境下安装多个tomcat冲突解决配置方法
  • 解决oracle用户连接失败的解决方法
  • Andriod上ANR介绍及ANR问题解决方法
  • 呵呵,前段时间Ubuntu服务器版的问题总算解决了,解决方法就是重新安装桌面版-_-!
  • chrome下jq width()方法取值为0的解决方法
  • JQuery给元素绑定click事件多次执行的解决方法
  • Provider错误80004005终极解决方法(完全有效的方法)
  • mysql修改用户密码的方法和mysql忘记密码的解决方法
  • 浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
  • jquery live()调用不存在的解决方法
  • Android启动模拟器报错解决方法
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • VS2005解决方案管理器中不显示解决方案节点的解决办法
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 有高手能破解RAR的密码吗,至今没有找到人能解决?(先只给10分意思意思,若解决,至少给解决的人500分!说话算话!)
  • window.onload事件覆盖掉body onload事件(window.onload和html body onload事件冲突)解决办法
  • 奇怪,怎么“已解决”问题只有4页(10/17日之后的),以前的已解决问题到哪里看?
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 解决!解决!求助如何安装多系统!
  • Linux 下c++开发error while loading shared libraries问题解决
  • 解决多级索引速度慢的问题可否像解决多级页表那样使用TLB?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3