针对 bae 免费的 mongodb 不支持长连接问题,大家有什么方法

2014-09-03 09:51:07 +08:00
 laoisaudi
最近在试着用bae来搭一个nodejs的server,database用免费的mongodb,用mongoose连接,但是会出现一段时间没请求会断掉会数据库的连接,然后一旦有请求进来就崩掉,bae的lightpd会重启server。
对此,我在models里的mongodb模块写了针对断线重连的处理,但是貌似不管用,请大家指教,代码如下:
var mongoose = require('mongoose');
mongoose.connect('mongodb://username:password@mongo.duapp.com/database', {server: {auto_reconnect:true]});
mongoose.connection.on('close', function(){
mongoose.connect('mongodb://username:password@mongo.duapp.com/database', {server: {auto_reconnect:true]});
});

exports.mongoose = mongoose;


感谢大家的解答!
7444 次点击
所在节点    Node.js
25 条回复
ipconfiger
2014-09-03 09:53:14 +08:00
用一个计时器来记录alive的时间,超过时间就主动断掉重连
laoisaudi
2014-09-03 09:54:39 +08:00
@ipconfiger 这个方法可以考虑,但是不知道为什么上面的方法会不管用
linKnowEasy
2014-09-03 09:56:18 +08:00
怎么做到网页变色的。。。
laoisaudi
2014-09-03 09:57:01 +08:00
@linKnowEasy 本来就是这个颜色的。。估计nodejs版的风格吧。。
WildCat
2014-09-03 10:17:15 +08:00
WildCat
2014-09-03 10:17:48 +08:00
WildCat
2014-09-03 10:18:05 +08:00
WildCat
2014-09-03 10:18:47 +08:00
跪了。。。不玩了
laoisaudi
2014-09-03 10:19:55 +08:00
@WildCat 哈哈,多谢多谢,你辛苦了
laoisaudi
2014-09-03 10:30:44 +08:00
@WildCat 果然有用!
RangerWolf
2014-09-03 10:31:46 +08:00
我遇到跟你一样的情况,然后我就把DAO层全部换成MYSQL,世界就美好很多了~
WildCat
2014-09-03 10:31:49 +08:00
@laoisaudi 哈,偶尔还是会出现数据库连接问题,另外我没有考虑这种做法开销大小。
我只是做了个参加坑爹比赛的项目而已~

坐等年底用AWS啦
laoisaudi
2014-09-03 10:37:38 +08:00
@WildCat 还会有问题?会是些什么问题?让我有个心理准备。。哈哈
然后我也准备用aws的,为啥要等年底?
laoisaudi
2014-09-03 10:38:23 +08:00
@RangerWolf souga
odirus
2014-09-03 10:49:20 +08:00
楼主,你的代码是针对接收到 close 事件再断线重连,但是只有当 TCP 最后一次握手成功或者是直接 socket.destroy 的时候才会触发该事件。假设 mongoose 接收到 error 事件并正处于最后的握手等待期,写数据的时候就会出现 socket 错误,倘若这个时候你没有捕获错误,程序就会崩溃。我一直都是用的 mongodb 模块,当传输数据的时候如果发生错误,它不仅会断线重连,而且还会缓存这部分命令,直到缓存池中有可用连接的时候再发送。
laoisaudi
2014-09-03 11:02:14 +08:00
@odirus 嗯嗯,多谢,我修改了代码,加了一个捕获error的回调,使得出错的时候先断掉连接,然后让他触发close的回调
WildCat
2014-09-03 11:06:28 +08:00
@laoisaudi 年底才完全开放商用吧

我偶尔还是会遇到数据库连接错误
laoisaudi
2014-09-03 11:09:57 +08:00
@WildCat 噢噢,我昨天看到有免费使用,就准备去试试
WildCat
2014-09-03 11:13:24 +08:00
@laoisaudi 你有申请到AWS的预览名额?我很早就申请了,很久之后他们客户经理给我打电话,问我是干嘛的,我说大学生,他说只提供给着急迁移到AWS的大客户,让我等年底正式商用
oott123
2014-09-03 11:23:00 +08:00
@WildCat 你说的是国内版 aws 吧…楼主说的好像是国际版?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/131434

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX