转载:Can't connect to MySQL server on 'localhost' (10055)

服务器:   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-wait  
   
  解决方案,1。建议修改最大连接数,或者把   mysql_connect()   方法都改成了   mysql_pconnect()   方法,  
                    2。治标,封锁这些IP,一个IP连接大于3的就有点不正常,封  
                    3,治本,修改站点程序,严禁刷新太快!

 

链接数的修改:

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


TcpTimedWaitDelay描述:确定 TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。减少此条目的值允许 TCP/IP 更快地释放已关闭的连接,为新连接提供更多资源。如果运行的应用程序需要快速释放和创建新连接,而且由于 TIME_WAIT 中存在很多连接,导致低吞吐量,则调整此参数。 如何查看或设置: 使用 regedit 命令访问 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters 注册表子键并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值。 将此值设置为十进制 30,其为十六进制 0×0000001e。该值将等待时间设置为 30 秒。 停止并重新启动系统。 缺省值:0xF0,它将等待时间设置为 240 秒(4 分钟)。建议值:最小值为 0×1E,它将等待时间设置为 30 秒。

 

http://adamghost.com/2008/11/mysql-10055-%E9%94%99%E8%AF%AF%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/?jdfwkey=gkden3

 

Error: Can't connect to MySQL server on 'localhost' (10055)
MySQL服务没有启动,请启动该服务

       1)Linux主机,在控制台执行 service mysql start 启动 MySQL 服务。        2)检查磁盘空间是否还有剩余可用空间,尽量保持有足够的磁盘空间可用。        3)检查 my.ini 里的 basedir (MySQL 安装地址) 和 datadir (数据目录存放地址)等参数设置是否正确,然后重新启动下 MySQL 服务。        4)如果在刷新后偶尔能够正常显示而且服务器是Windows系统的话,减小Windows中TcpTimedWaitDelay时间可解决此类问题,默认情况下为240(未设置的情况下也是这个数值)此项设置需要到注册表如下位置进行设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpTimedWaitDelay  如注册表中没有TcpTimedWaitDelay这个项目,请增加项目,并设置为双字节(DWORD)类型数值设置为30 ~ 60 之间即可

相关文章
相关标签/搜索