MySQL数据库 Too many connections
目前创新互联公司已为近千家的企业提供了网站建设、域名、虚拟空间、绵阳服务器托管、企业网站设计、云梦网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
出现这种错误明显就是 mysql_connect 之后忘记 mysql_close;
当大量的connect之后,就会出现Too many connections的错误,mysql默认的连接为100个,而什么情况下会出现这种错误呢?
正常的mysql_connect 之后调用 mysql_close()关闭连接
但在连接错误时,会者mysql_real_query()出现错误退出时,可能忘记mysql_close();
所以在程序return 之前一定要判断是否close(),最稳妥的方法就是在写任何函数时都只有一个出口!
还有可以通过修改mysql配置文件来加大允许连接的数量!
有时你的服务器是经常出现这样的错误呢:
错误信息如下:
Can not connect to MySQL server
Error: Too many connections
Errno.: 1040
Similar error report has beed dispatched to administrator before.
从官方文档知道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脚本自动启动的用户。
修改MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe这个文件grep−n‘maxconnection′
MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe这个文件grep−n‘maxconnection′MYSQL_HOME/bin/mysqld_safe
修改对应行号的max_connections参数值
3、服务器登录mysql : mysql -u root -p
百分之九十进不去,进不去的执行重启命令 :/etc/init.d/mysql restart(centos系统)
此时重启mysql就能连接mysql了,如果还有时间,可以继续下一步,治病要治本
打开配置文件 添加一下配置 vi /etc/my.cnf
wait_timeout = 600
interactive_timeout = 600
再次重启mysql即可
原理解答
mysql 默认100 连接数,超过则连不上,实际工作的连接数远远没有100,大部分在sleep
所以要么增大连接数,要么杀掉无用连接,推荐后者。
当系统服务的MySQL错误日志中,发现大量以下类似信息:经常收到客户关于通信故障错误的问题—客户面临间歇性的”Got an error reading communication packet”错误,这里分析这个错误出现的原因,以及如何解决这个问题。
下面看看官网怎么说:
Other reasons for problems with aborted connections or aborted clients:
Aborted connection情况下,这也意味着以下几个问题:
当然,也可能是其它原因导致的。坦白讲,异常中断是很难诊断的,也有可能是和网络、防火墙有关。
如果log_warnings的值大于1,mysql会将类似信息写入错误日志:
可以修改一下log_waring的值:
但这样直接修改,重启后会失效,修改配置文件mysql.cnf log_warnings = 1
mysqld.exe-应用程式错误怎么办?
在DOS下试用命令排除:①CMD②for %1 in (%WinDir%\system32\*.dll) do regsvr32.exe /s %1③for %1 in (%WinDir%\system32\*.ocx) do regsvr32.exe /s %1
具体做法:开始-执行-输入cmd--回车,在命令提示符下输入下面命令:
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车。
完成后,再输入下面的:
for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车。如果怕输入错误,可以复制这两条指令,然后在命令提示符后击滑鼠右键,打“贴上”,回车,耐心等待,直到萤幕滚动停止为止。
mysqld.exe应用程式错误
系统盘放的东西多了,要么就少装软体在系统盘,要么就更改一下系统盘的虚拟记忆体,以后就不会出现错误了。
mysqld-nt.exe 应用程式错误
若应用程式没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指标,继续在之后的执行中使用这块记忆体。真正的0地址记忆体区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程式使用。
drwtsn32.exe应用程式错误?dwwin.exe应用程式错误?
dwwin - dwwin.exe - 程序资讯
程序档案: dwwin 或者 dwwin.exe
程序名称: Microsoft Doctor Watson
描述:
dwwin.exe是微软Doctor Watson错误报告程式,包括在一些微软的产品中。
Dr.Watson是Win 2000的一个崩溃分析工具,它会在应用程式崩溃的时候自动弹出,并且在预设情况下,它会将与出错有关的记忆体存为DUMP档案以供程式设计师分析。
不过我们作为普通使用者,记录DUMP档案不但毫无用处,而且还有两个极大的缺点:
1.崩溃的瞬间,会有一个对话方块弹出,告知应用程式出错将被关闭。这时,一般伴随有巨型的读盘现象,要过很久程式才能关闭。这是因为Dr.Watson在做记忆体DUMP。
2.占用大量磁碟空间。有时DUMP下来的这些档案会占用大量的磁碟空间。
实际上DRWTSN32是WIN2000预设的出错侦错程式,如果我们根本不想用它的话,开启登录档编辑器,进入主键〔HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\AeDebug〕,然后将“AUTO”键值设定为0。
update exe 应用程式错误怎么办
是软体更新程序,这个更新程序损坏了所以执行就会错误。
你可以看看有哪些软体是开机启动的,然后关闭它,再次开机不会报错就找到那个软体了,
重新安装一下损坏的那个软体就行
nvstreamsvc exe 应用程式错误怎么办
应用程式错误的原因
1.病毒木马造成的,在当今网际网路时代,病毒坐着为了获得更多的牟利,常用病毒绑架应用程式和系统档案,然后某些安全防毒软体把被病毒木马感染的应用程式和系统档案当病毒杀了导致出现应用程式错误。
2.应用程式元件丢失,应用程式完整的执行需要一些系统档案或者某些ll档案支援的,如果应用程式元件不完整也会导致应用程式出错。
应用程式自身的bug引起的应用程式发生异常,人没有完人,程式也一样的,程式设计师只能做到尽量让bug出现少点,出现一个就解决一个bug。
3.应用软体与作业系统或其他应用软体发生不相容造成应用程式发生异常。
4.作业系统自身的问题,作业系统本身有bug ,也会导致出现崩溃 应用程式错误 该记忆体不能为read。
5.电脑硬体相容性也会引起的,还有散热不好,超频等也会出现应用程式错误的。
应用程式错误解决办法
先排除是不是病毒木马引起的,请使用金山卫士进行木马查杀,
⑴、进入主介面进入【查杀木马】
⑵、然后点选【快速扫描】即可
2.用金山卫士进行漏洞修复,解决系统本身造成的应用程式发生异常。
⑴、进入主介面进入【漏洞修复】
⑵、然后点选【立即修复】即可
3.如果是单一某个应用程式引起的应用程式错误,那就尝试重新解除安装该软体进行重新安装。如果还是无法解决,就关闭其他软体看是否能解决。
4.以上方法还是无法解决,那就肯能是硬体问题引起的,那就分别检查记忆体条,主机板,散热器等等。这个建议找专业硬体维修商解决,不推荐大家自己手动解决。
ravmond exe应用程式错误怎么办
出现这个现象有方面的,一是硬体,即记忆体方面有问题,二是软体,这就有多方面的问题了。 一:先说说硬体: 一般来说,电脑硬体是很不容易坏的。记忆体出现问题的可能性并不大(除非你的记忆体真的是杂牌的一塌徒地),主要方面是:1。记忆体条坏了(二手记忆体情况居多)、2。使用了有质量问题的记忆体,3。记忆体插在主机板上的金手指部分灰尘太多。4。使用不同品牌不同容量的记忆体,从而出现不相容的情况。5。超频带来的散热问题。你可以使用MemTest 这个软体来检测一下记忆体,它可以彻底的检测出记忆体的稳定度。 二、如果都没有,那就从软体方面排除故障了。 先说原理:记忆体有个存放资料的地方叫缓冲区,当程式把资料放在缓冲区,需要作业系统提供的“功能函式”来申请,如果记忆体分配成功,函式就会将所新开辟的记忆体区地址返回给应用程式,应用程式就可以通过这个地址使用这块记忆体。这就是“动态记忆体分配”,记忆体地址也就是程式设计中的“游标”。记忆体不是永远都招之即来、用之不尽的,有时候记忆体分配也会失败。当分配失败时系统函式会返回一个0值,这时返回值“0”已不表示新启用的游标,而是系统向应用程式发出的一个通知,告知出现了错误。作为应用程式,在每一次申请记忆体后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程式的“健壮性”。若应用程式没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用游标,继续在之后的执行中使用这块记忆体。真正的0地址记忆体区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程式使用。在没有保护机制的作业系统下(如DOS),写资料到这个地址会导致立即当机,而在健壮的作业系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由作业系统强行关闭出错的应用程式,以防止其错误扩大。这时候,就会出现上述的记忆体不能为“read”错误,并指出被引用的记忆体地址为“0x00000000“。记忆体分配失败故障的原因很多,记忆体不够、系统函式的版本不匹配等都可能有影响。因此,这种分配失败多见于作业系统使用很长时间后,安装了多种应用程式(包括无意中“安装”的病毒程式),更改了大量的系统引数和系统档案之后。 在使用动态分配的应用程式中,有时会有这样的情况出现:程式试图读写一块“应该可用”的记忆体,但不知为什么,这个预料中可用的游标已经失效了。有可能是“忘记了”向作业系统要求分配,也可能是程式自己在某个时候已经登出了这块记忆体而“没有留意”等等。登出了的记忆体被系统回收,其访问权已经不属于该应用程式,因此读写操作也同样会触发系统的保护机制,企图“违法”的程式唯一的下场就是 *** 作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程式自身的BUG,你往往可在特定的操作顺序下重现错误。无效游标不一定总是0,因此错误提示中的记忆体地址也不一定为 “0x00000000”,而是其它随机数字。
我玩游戏应用程式错误怎么办??autoup.date.exe应用程式错误
这种情况中毒的可能性很少
我这说的都是解决方法加一点理论,如果你想学理论可以看一下长篇大论,
软体方面大概就是程式冲突,系统有问题,原因是这样
记忆体被分配为一个个地址,这个地址用到的时候软体冲突导致记忆体写不进,就会出 现这种情况。如果你最近装了什么新软体 谢了试试,还有可能是系统有问题了,比如少了什么档案。。。
硬体方面那就是记忆体有问题了,这个地址在记忆体里是坏的不能存取,当你用到它的时候系统就报错了,那上面的数字就是损坏的记忆体地址
解决方法一般都是先软后硬,像上面说的谢新软体,不行的话重灌系统,还不行检测记忆体,有错更换就行
如有引用请注明来自LEEDOVE
有朋友问为什么老是玩游戏的时候出现的多,因为平时的时候用不了那么多记忆体,也就是说你1G的记忆体有大部分在平时是空闲的,实体地址坏的记忆体刚好又在空闲中所以平时很少报错,而游戏时占用的比较多的记忆体 ,也用到了坏的地址所以有时一开就报错,呵呵
1,擦拭记忆体条,最好用橡皮
2,防毒,清木马,一般用360,不排除有毒,但可能性不大,
3,谢掉你所安装的软体,游戏再装一次试试,若是光碟则换张盘或软体 试,重下一个试试
4,重灌系统,
5,检测记忆体,再检测硬碟,如果有问题则更换,
6. 更新系统到最新,(这个一个网友更新后解决问题了让我下次回答是加上)leedove
答案版本3.0 :-)修改过几次了 如果对你有帮助并选我最佳请给个好评谢谢
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款