首页 > 代码库 > 解决Can't connect to MySQL server on 'localhost' (10048)

解决Can't connect to MySQL server on 'localhost' (10048)

解决Can‘t connect to MySQL server on ‘localhost‘ (10048)

 

您使用的是Windows操作系统,此错误与一个注册表键值TcpTimedWaitDelay有关。
减小Windows中TcpTimedWaitDelay时间可解决此类问题,默认情况下为240(未设置的情况下也是这个数值) 
此项设置需要到注册表如下位置进行设置
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/TcpTimedWaitDelay  
如果注册表中没有TcpTimedWaitDelay这个项目,请增加这个项目,并设置为双字节(DWORD)类型 
数值设置为30 ~ 60 之间即可

 

转载声明:本文转自http://www.devdao.com/Article/384352.htm

====================================================================

 

解决Can‘t connect to MySQL server on ‘localhost‘ (10048)

原出处:http://www.hao32.com/webserver/55.html
解决Can‘t connect to MySQL server on ‘localhost‘ (10048), 一般见于使用mysql的windows 2003服务器.

错误的出现的原因:

应用程序需要快速释放和创建新连接, 但是由于 TIME_WAIT 中存在的连接超过默认值,导致较低吞吐量.

解决方案:
和本错误密切相关的两个windows的注册表项:TcpTimedWaitDelay和MaxUserPort的值.

TcpTimedWaitDelay 确定 TCP/IP 可释放已关闭连接并重用其资源前, 必须经过的时间. 关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态. 此时间期间, 重新打开到客户机和服务器的连接的成本少于建立新连接. 减少此条目的值允许 TCP/IP 更快地释放已关闭的连接, 为新连接提供更多资源.

MaxUserPort 确定从系统请求任何可用用户端口时所用最大端口数,TCP/IP 可指定的最高端口号. 如果建立 TCP 连接最大端口连接大于 5000, 本地计算机响应以下错误信息WSAENOBUFS (10055): 因为系统缺乏足够缓冲区或者因为队列已满而无法执行套接字上操作, 从而导致应用程序的10048错误.

打开注册表编辑器regedit

TcpTimedWaitDelay 设置:
找到 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters 注册表子键
并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值
设置此值为十进制 30, 十六进制为 0×0000001e
该值等待时间将是 30 秒。
本项的默认值:0xF0(16进制), 等待时间设置为 240 秒

MaxUserPort 设置(增加最大值端口连接):
找到 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters 注册表子键
并创建名为 MaxUserPort 的新 REG_DWORD 值
设置此值为十进制最低 32768
该值等待时间将是 30 秒。
重启windows系统。
本项的默认值:5000(十进制)

关闭注册表编辑器, 重启windows系统。

 

转载声明:本文转自http://www.ismole.net/thread-997-1-1.html

====================================================================

 

Mysql 10048,10055 错误详细解决方法汇总


  最近服务器数据库时不时的崩掉,郁闷,找了很多方法,也没解决。把这些方法汇总转过来。
  服务器开一段时间后,Mysql就自动挂掉~非要重启才能解决问题,建议新手还是用mysql4.X版本,5的确很不完善。另外出现此种问题,可不是简简单单一种方法就能解决的。希望其他出现此问题的朋友,能得到启发~~~
描述1:
服务器配置:win2003、serv-u6.0、mysql-4.0.24、php-4.3.11、sql2000
服务器运行一段时间后,php的网站打不开,提示Can‘t connect to MySQL server on ‘localhost‘(10055)错误。重起mysql服务没有作用,只有重起服务器。但过几天以后,又出现此错误。 

我的my.ini配置内容:
#This File was made using the WinMySQLAdmin 1.4 Tool 
#2005-6-26 16:53:57 

#Uncomment or Add only the keys that you know how works. 
#Read the MySQL Manual for instructions 

[mysqld] 
basedir=C:/mysql 
#bind-address=192.168.13.81 
datadir=C:/mysql/data 
#language=C:/mysql/share/your language directory 
#slow query log#= 
#tmpdir#= 
#port=3306 
#set-variable=key_buffer=16M 
[WinMySQLadmin] 
Server=C:/mysql/bin/mysqld-nt.exe 
user=root 
password=%%%
--------------------------------------------------------------------------------

描述二:
Can‘t connect to MySQL server on ‘localhost‘ (10055) ( 2003 ) 
Can‘t connect to MySQL server on ‘localhost‘ (10048) ( 2003 ) 

我的系统是2003,我的MYSQL 一段时间就就会反复出现上面的错误.... 重启就好了,但过段时间问题又来了... 相关研究方向 

描述三:
我的MYSQL最近老是出错,提示‘localhost‘ (10055) 错误!察看日志,是这样提示的: 
-------------------------------------------------------------------------------- 
MySql: ready for connections 
MySql: ready for connections 
Cannot initialize InnoDB as ‘innodb_data_file_path‘ is not set. 
If you do not want to use transactional InnoDB tables, add a line 
skip-innodb 
to the [mysqld] section of init parameters in your my.cnf 
or my.ini. If you want to use InnoDB tables, add to the [mysqld] 
section, for example, 
innodb_data_file_path = ibdata1:10M:autoextend 
But to get good performance you should adjust for your hardware 
the InnoDB startup options listed in section 2 at 
http://www.innodb.com/ibman.html 
050621 13:25:20 MySql: Normal shutdown 
050621 13:25:20 MySql: Shutdown Complete 
MySql: ready for connections 
--------------------------------------------------------------------------------
请问是什么意思啊?而且每次出错后,必须重启动机器才可以好。如果只是重启mysql服务,没有用。

解决办法参考(网上)
一:
我觉得可能是楼主的某些程序写的有问题,可能占用了连接而没有断开。另外,楼主的MYSQL服务器是不是安装有防火墙?特别是诺顿防火墙,我遇到过,明明是允许我的IP访问被保护的服务器,可是一段时间后,挪顿就认为我的IP是非法攻击,自动就给我IP封了,要么等20分钟(默认的规则),要么从新启动服务器就好了。。。。。。。

二:此条慎用,我更改后,威视总是出现服务器内部错误
您使用的是Windows操作系统,此错误与一个注册表键值TcpTimedWaitDelay有关。减小Windows中TcpTimedWaitDelay时间可解决此类问题,默认情况下为240(未设置的情况下也是这个数值)。 此项设置需要到注册表如下位置进行设置:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParametersTcpTimedWaitDelay 
如果注册表中没有TcpTimedWaitDelay这个项目,请增加这个项目,并设置为双字节(DWORD)类型。数值设置为30 ~ 60 之间即可。

三:
服务器ftp测试完毕,重新启动了一下。就一切稳定了。 不过仍然有几个问题没有搞清楚。心里不放心。 

1。上周五的时候,ftp压力并不大的时候,30分钟在线统计900多人的时候,10%的比率出现mysql连接失败的10048错误。 
2。我当时使用的连接方法是 mysql_connect()。服务器iis+php+isapi的方式。参考了一些资料以后,我当时马上把 mysql_connect() 方法都改成了 mysql_pconnect() 方法,当时,问题看上去是解决了。 
3。周六,服务器开始ftp压力测试。15%的比率出现 mysql连接失败的 10048 10055 错误。比上次多了个10055错误。 

关键不知道10048 10055错误代码具体代表的错误信息。应该说,问题仍然没有找到确切的答案。

我开了serv-u,有4个socket连接,mysql马上挂了 数据挖掘研究院

四:
Can‘t connect to MySQL server on ‘localhost‘ (10048) 
Can‘t connect to MySQL server on ‘localhost‘ (10055) 
MySQL版本 4.0.13-nt 

服务器: windows2000 server + iis5.0 + php isapi + mysql 

我用php+mysql开发了一个web站,该站访问量很高。 
但是正常运行了一个多星期以后,开始频繁出现Can‘t connect to MySQL server on ‘localhost‘ (10048) 错误。 

统计数据如下: 
尝试失败连结数 10,594 
每小时总连结数 885.37 
% 15.91 % 

可以看出,连接失败的比率非常高了。需要强调的是,一周之前,同样的连结数,并没有出现如此高的错误率。 

原因分析:利用fport工具查看,你会发现有人在耗尽你的数据库连接。而很明显他们的特征是:有数十个连接来自同一IP,而且都是time-waitk 

解决方案:1。建议修改最大连接数,或者把 mysql_connect() 方法都改成了 mysql_pconnect() 方法, 
               2。治标,封锁这些IP,一个IP连接大于3的就有点不正常,封
               3。治本,修改站点程序,严禁刷新太快! 
补充说明:可以直接在防火墙封锁外部连接本地的3306端口!

 

转载声明:本文转自http://bbs.bokecc.com/viewthread.php?tid=76307

====================================================================

解决Can't connect to MySQL server on 'localhost' (10048)