Warning: mysql_pconnect() [function.mysql-pconnect]: Can't connect to MySQL server on 'localhost' (10055) Warning: mysql_select_db() [function.mysql-select-db]: Can't connect to MySQL server on 'localhost' (10055) Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in 网站每隔4-6小时 就出现上述 提示,重启mysql 失败,必须重启服务器,重启后正常。环境:系统2003 Apache-20+MySQL-5.0.77+PHP-5.2.9-2 IIS 只开了一个FTP已设置注册表 TcpTimedWaitDelay 为30 已设置mysql的my.ini key_buffer = 128Mmysql_connect 也换成了 mysql_pconnect()另有人说是 mysql临时文件夹满或C盘空间满,出问题的时候我看了 C盘只用了几百M,mysql临时文件夹找不到在哪至今仍不能解决问题,以前PHP都是用的别人空间 不存在这问题,这次自己搞服务器出现了这个问题,热切希望有高手能够解决
应用程序需要快速释放和创建新连接, 但是由于 TIME_WAIT 中存在的连接超过默认值,导致较低吞吐量.解决方案参考这篇文章:http://www.hao32.com/webserver/55.html可能性二:
其他服务的连接太多,比如FTP服务,耗尽了资源,参看这篇文章:http://hi.baidu.com/vili/blog/item/ea2c8e2621af791d8a82a180.html/cmtid/fbe3dc161f3bb615972b43d5可能性三:
黑客攻击,参看这篇文章:http://blog.csdn.net/guwenzhong/archive/2009/05/11/4166872.aspx
http://www.111cn.net/database/110/mysql_connect-mysql_pconnect.htm
怎么可能才只用了几百M??mysql的data目录默认在C:\Documents and Settings下。自己找下。把data目录备份出来。
删除mysql,以前用的myisam的方式运行,再装的时候改成innodb的方式运行,反之亦然。
卸载MySQL,然后手动删除my.ini文件,再把MySQL重新安装一次。
翻译下: mysql_pconnect()函数设计的目的是为了提供一种机制来减少与Mysql服务器建立/断开连接的开销。不幸的是,由于Apache服务器架构和PHP架构之间的相互作用,一个使用长链接的高流量的网站会因为很多没有使用的链接迅速堵塞Mysql服务器,并且导致活跃的链接无法访问数据库。最后,俺们再看下手册上咋写的: 警告:在使用永久连接时还有一些特别的问题需要注意。例如在永久连接中使用数据表锁时,如果脚本不管什么原因无法释放该数据表锁,其随后使用相同连接的脚本将会被永久的阻塞,使得需要重新启动 httpd 服务或者数据库服务。另外,在使用事务处理时,如果脚本在事务阻塞产生前结束,则该阻塞也会影响到使用相同连接的下一个脚本。不管在什么情况下,都可以通过使用 register_shutdown_function() 函数来注册一个简单的清理函数来打开数据表锁,或者回滚事务。或者更好的处理方法,是不在使用数据表锁或者事务处理的脚本中使用永久连接,这可以从根本上解决这个问题(当然还可以在其它地方使用永久连接)。
所以导致你操作失败. 请问你的网站访问量很大吗?
数据库的连接要分两步走:
1、建立应用程序到数据库服务器的tcp/ip连接(暂且称作 物理连接)
2、建立应用程序到数据库的应用连接执行长连接的php程序将自动关闭,应用连接。所以不存在临时表不能被删除的问题
同时php维护一张保存有 物理连接 的表。当发现又有长连接请求时,就从表中取出一个空闲的连接来使用。若无空闲连接则创建新的物理连接。这个过程有如 OBDC、JDBC 中的连接池一般遗憾的是,由于 php 必须考虑到工作在两大类操作系统的两种工作模式。用通用代码维护连接表是一件非常困难的事情。对于使用者应该谅解开发者的缺陷,而作为有能力程序员则应积极加入开发团队。
“前段时间跑在客户的几台服务器上的应用mysql连接都失败,出现10055的错误提示,这些应用都是通过localhost连接本机数据库的,因为之前同样的应用安装在其他客户的服务器上运行都是没问题的,排除程序的问题,后来查到10055是windows的一个错误号,意思是说虚拟空间不足,原来客户在安装windows的时候没有分配虚拟空间,调整windows的虚拟内存大小即解决问题。”
pconnect不能减轻资源消耗,反而浪费。
连接数过多不是这样的提示。
tcp,多数时候不会涉及这东西,可能性不大
临时文件夹等,这个方向对了,地方错了。再看看你的系统环境,如果经过其他环境考验,那么就是你服务器环境问题,
而这种既是服务器环境问题,又很可能资源不足造成,那你就要看看系统内存,虚拟内存啥的了。
因为它不是刚开始就出问题。不过,建议楼主找到问题原因后,再仔细分析分析应用。看是否你的某些应用导致系统性能大幅度降低。
但并不代表他适用所有情况。
所有php子进程共用一个长连接进程。以上建议纯属参考