ss1271's Site

风餐露宿,不可一日无码.

遇到并解决Error Establishing a Database Connection

| Comments

本站最近一周多真是一波三折。先后遇到502,504以及Database Connection Error。因为困扰多时,终于解决,故写下利于他人遇到类似问题时,能够不浪费如此之多的时间。 在八月一日时发现网站遭遇502 Bad Gateway错误,发现是PHP死掉,于是重启Nginx重启PHP,问题解决; 时隔不到24小时,再次发现502 Bad Gateway错误,这时候再用重启Nginx重启PHP大法已经不管用,甚至重启服务器过几分钟之后还会出错,不过错误由502变成了504 Connection Timeout。 通过仔细研究Nginx和PHP的配置文件和上网搜索有关条目,发现可能问题出在PHP的线程数量和内存分配上。 我采用的方法如下(来源): 修改php.ini
vim /usr/local/php/etc/php.ini
确认其中的memory_limit为256MB,然后重启nginx,发现问题没有改善。 继续修改nginx配置:
vim /usr/local/nginx/conf/nginx.conf
修改worker_processes 这是nginx进程数 和
vim /usr/local/php/etc/php-fpm.conf
中的max_children,这是php进程数 因为采用的是Linode 512,故使用1个nginx进程+10个php-fpm进程。 至此本来问题应该会改善,重启nginx之后发现确实没有遇到502 504之类的问题了,但是有新问题出现:blog变成了Error Establishing a Database Connection。无比纠结了。难道MySQL又出问题了? 登陆SQL面板,发现在用户名密码正确的情况下,页面只是刷新一下,继续让你登陆。 用SSH连接MySQL,提示SQL进程不存在。 看来SQL没有启动,于是尝试
/etc/init.d/mysql start
结果MySQL就一直处于启动状态,表现为(MySQL Starting一直处于“…”状态) 后来和 @TimothyYe 兄聊天时提到这个问题,他说有可能是磁盘空间满了导致SQL一直启动不能。 回去立刻
df -h
发现果然available是0,想到前一阵子Linode搞活动,赠送了4GB的磁盘空间,于是关掉Linode,Resize磁盘空间,把那4GB空间加进去,重启服务器,这次终于搞定! #UPDATE# 由于添加磁盘空间的方法指标而不治本,故而最近又遇到一次Error Database Connection,这次必须采用清理日志的方法来解决其占用磁盘空间过大的问题。 首先明确mysql的日志文件位于
/usr/local/mysql/var
其中mysql-bin.0000**这样文件名的都是mysql的日志文件,不建议手动删除,建议先采用mysql的 mysql>reset master 直接安全无痛删除这些操作文件。 另外如果日后不想mysql记录这些操作日志,可以直接在/etc/my.cnf文件中把bin-log那个注释掉即可。 另外,如果遇到mysql无法启动,提示Manager of pid-file quit without updating file.时候,如果无法排错,不妨先尝试把my.cnf文件改名备份:
mv /etc/my.cnf /etc/my.cnf.old
然后直接启动mysql,就一切正常了。

Comments