昨晚12点多的时候突然被从被窝里拉出来了,虽然不再睡觉,但是这种感觉也是很不爽的,就因为我负责的一个网站首页出现500错误,提示数据库不能连接了。 妈呀,这么大的事,怎么还能安心玩手机,赶紧起来查找原因。
目前我这个站是搭建在2台服务器上的,用这2台机器来做负载均衡,跑了3个多月了,一点事都没有, 怎么会突然连不上数据库呢。查看了一下配置,这个站连接着 2个mysql,不是主从,而是业务分开的2个数据库,因为要把2块不太相关的内容整合在一起,通过vpn连接上公司的内网,ssh上服务器尝试连接数据库,第一个数据库 连接正常,但是尝试连接第二个数据库的时候就出现连接错误了,服务器拒绝连接了。很显然,要么这个数据库所在的服务器宕机了,要么就是这个数据库的请求数太多了, 为了避免宕机,数据库自动进入一种保护机制,拒绝所有后来的连接。
尝试这ping了一下服务器,没有宕机,还好,看来就是一个db出问题了,这个db之前也出过问题,当时运维是更改了配置,增加了数据库的最大连接数上限,不过这么晚的时候 找运维也不好找,人家也不愿意大半夜从床上跑起来给你改服务器配置。那么没办法了,只能改代码了。只能把所有涉及到第二个数据库的代码都删了,这样还有一线生机。
因为我的站点结构比较简单,内容只包括视频和文章,视频来自一个数据库,文章来自另一个数据库,只要把文章都干掉就ok,还好文章也不多,而且在页面上结构挺分离的, 还算比较好弄,在配置里面删除第二个数据库的配置,在控制器里删除调用了第二个数据库的方法,在页面上删除文章所在的div,然后刷新页面,ok好了。
真是惊险刺激啊,要是我没有vpn的话这个站就得挂一晚上,要是文章和视频的耦合度太高的话我也束手无策,要是前端设计的页面太复杂的话也会给我的改动带来很多麻烦。还好 这些假设都不存在。感谢Yii框架,大爱。