Rails [重新描述] 在 DB 挂掉的时刻,怎么保证另一个不需要挂掉 DB 的网页可以正常浏览?

hlcfan · 2012年08月28日 · 最后由 hlcfan 回复于 2012年10月19日 · 3207 次阅读

描述

Server:Passenger 设想下:一个有多个数据库的程序在跑的过程中,一个数据库挂掉了,挂掉的叫 DB1,那么整个 rails 程序就会出错。

怎么保证在另一个不需要挂掉的数据库 DB1,的页面中可以继续浏览?

数据库都挂了,跑起来有什么用?

#1 楼 @huacnlee 有时需要显示一些静态页面

#4 楼 @hlcfan 静态页面只要 nginx 活着的就行了啊

#5 楼 @ywencn 怎么切换到静态页面?

public 下面有个 500.html,默认是这个

可以试着把不要 DB 下能跑的页面缓存起来呀,比如做一个 page_cache。

#7 楼 @Rei 赞同。在生产环境,ROR 不会给出详细的错误提示,但会给出 500 Error。定义一下这个页面就行了。

抱歉,各位,这个问题我没描述清楚

怎么解决?把 DB 启起来,重启程序...

不知道能不能捕获 sql 异常,如果是 sql 异常的话跳转到 sql 异常页面,其他异常跳转到普通异常页面

从服务器入手啊

#11 楼 @fresh_fish 我不能实时看着他挂掉啊

楼主是想要报警吧……

上各种监控吧

#15 楼 @hlcfan

比较简单通用的方式,写一个脚本 (bash、python、ruby、perl 都行) 获取某个页面,分析这个页面的内容,如果含有数据库挂掉相关的错误则重启 DB,然后用 crontab 定期执行这个脚本,比如每分钟执行一次

@hlcfan 服务器上用 monit 加上 mysql 和 passenger 的监控

#18 楼 @Richie 不好意思,我没描述清楚。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号