问题:后台内容进行全部整体更新的时候会出现此错误 can not connect to mysql server 部分更新的时候不会出错; 判断:mysql服务器在程序连接时出现问题,请求数量过大,服务器承担不起; 解决:将配置文件中改为持久连接
wmxx_cn:
=================以下为第二种解决方案=======================================================================================
Can not connect to MySQL server 的解决方案。
Can not connect to MySQL server
通过 netstat -an 命令,发现在MySQL服务器上产生了大量的 WAIT_CLOSED | ESTABLISHED off 状态的链接。 是突然产生的,没有任何征兆。 因为web 服务器跑的是 fast-cgi php ,fast-cgi php 跟模块化的php不同的是,为了节省资源,fastcgi进程会管理mysql连接资源,fastcgi会与mysql产生一个持久连接,不会在一个php会话结束的时候释放mysql连接,而是将这个链接保存到“连接池”中,在下一个会话到来的时候,直接使用这个链接。
所以经过我初步判断,是连接超时引起的,我所有使用的mysqld 版本是 icc-5.1.39/40 (这两个版本都有这个问题)。尝试修改 /etc/my.cnf, # 96400 是一天的秒数+10000,因为我的mysql服务器每天会有一次冷备份,也就是会重启一次,所以设置的是这个数值。可以设置的更大一些,比如 86400000 接下来重启 mysqld。 应该可以了,观察中。 ================================= 2009-12-11 接上面 很不幸,那个问题依然存在,根据朋友的提示做了以下工作: 1. yum update 2. 更新 libevent 库到最新的版本 问题依然存在! 后来查看系统日志 tail -n 1000 /var/log/message 发现有部分 can't open file 'bbs_post.MYD#' 类的字样,还有系统文件数打开数达到上限的提示,突然想到, 可能是MYSQL分区引起的文件打开数过多!
做了一个php脚本优化/修复了一下表: 脚本 /root/optimizer_table.php 如下: <?php $dbhost = '192.168.1.1'; $dbuser = 'dbuser'; $dbpw = 'dbpw'; $dbname = 'test';
system("service nginx stop");
?> 执行: /usr/local/php/bin/php-cgi /root/optimizer_table.php ulimit -HSn 65536 另外有可能是PHP的EA加速造成,关闭PHP EA加速。
你得修改max_connections,自己去改大一点吧。 更多参考教程《提示Can not connect to MySQL server的原因》 |