ubuntu下mongodb服务自动停止
发布于 1年前 作者 sadleader 1397 次浏览

各位大侠好。我在ubuntu下部署了一个node.js + mongodb的个人网站,但 mongodb service 在服务器启动一段时间后会莫名其妙的停止,请问大家有类似的问题么?请教应该怎么解决。具体说明如下:

1. mongoDB 版本 mongo --version MongoDB shell version: 2.4.6

2. 安装过程 参照mongoDB官方文档安装:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

3. mongodb服务状态 服务器启动时,远程登录并查看: sudo service mongodb status mongodb start/running, process 2199 运行一段时间,大概5 - 10分钟,网站异常,原因是node无法链接mongo数据库,再次查看: sudo service mongodb status mongodb stop/waiting

烦请各位帮忙,另祝学业精进,工作顺利。

10 回复

看看 log 说些啥。

谢谢leapon先,日志上看一切正常,重启服务后 -- 服务停止后: vi /var/log/mongodb/mongodb.log

Wed Oct 30 23:45:57.798 [initandlisten] waiting for connections on port 27017

Wed Oct 30 23:45:57.798 [websvr] admin web console waiting for connections on port 28017 Thu Oct 31 00:12:05.122 [initandlisten] connection accepted from 127.0.0.1:43525 #1 (1 connection now open) Thu Oct 31 00:12:08.259 [conn1] end connection 127.0.0.1:43525 (0 connections now open) …… Thu Oct 31 00:13:01.120 [conn1] end connection 127.0.0.1:43525 (0 connections now open)

后面还有些 connection accepted 和 end connection,都是重复的类似内容。连接数最大才到6。最后一条是上面的 end connection。

另外不知道这个和帐户是否有关系,云服务器系统安装后,提供给我的就是root用户名和密码。之前是用root创建一个admin帐户,在admin帐户下安装和运行数据库,程序等,并且添加了开机自动启动…… 两三天试了很多方法都不行。

我现在在root账户下重新安装mongodb,正在测试……

和云管理员联系吧。太不正常了,log 里什么都没有。

Leapon 你好,还要请教你一下。

前天晚上我重装了系统和mongodb,为了找出问题所在,我没有运行链接mongodb的app,而是单独让mongodb服务在运行,同时跑了一个test程序,test只是单纯的从某端口接受请求,返回一个“hello world”。test不连接mongodb,我想看看是那个部分先down掉。

过了一天,mongodb服务和test程序都运行良好。于是我修改了原来的app,单纯的用node.js链接到mongodb,什么也不做,又运行了一个下午,一切正常。

但晚上我再次更新app,进行了一条数据库的插入,操作成功,但半小时后发现app挂掉了,ssh登录一看mongodb服务停止了。下面是log

Sat Nov 2 05:37:46.704 [conn174] end connection 127.0.0.1:43816 (4 connections now open) Sat Nov 2 05:37:46.704 [conn175] end connection 127.0.0.1:43817 (4 connections now open) Sat Nov 2 05:37:46.704 [conn173] end connection 127.0.0.1:43815 (4 connections now open) Sat Nov 2 05:37:46.704 [conn172] end connection 127.0.0.1:43814 (4 connections now open) Sat Nov 2 05:37:46.704 [conn176] end connection 127.0.0.1:43818 (4 connections now open) Sat Nov 2 05:37:56.646 [initandlisten] connection accepted from 127.0.0.1:43819 #177 (1 connection now open) Sat Nov 2 05:37:56.657 [initandlisten] connection accepted from 127.0.0.1:43820 #178 (2 connections now open) Sat Nov 2 05:37:56.657 [initandlisten] connection accepted from 127.0.0.1:43821 #179 (3 connections now open) Sat Nov 2 05:37:56.657 [initandlisten] connection accepted from 127.0.0.1:43822 #180 (4 connections now open) Sat Nov 2 05:37:56.657 [initandlisten] connection accepted from 127.0.0.1:43823 #181 (5 connections now open) Sat Nov 2 05:38:23.239 [PeriodicTask::Runner] task: WriteBackManager::cleaner took: 199ms Sat Nov 2 05:38:27.616 [TTLMonitor] query CodeCraft.system.indexes query: { expireAfterSeconds: { $exists: true } } ntoreturn:0 ntoskip:0 nscanned:1 keyUpdates:0 numYields: 1 locks(micros) r:1268824 nreturned:0 reslen:20 812ms Sat Nov 2 05:38:28.992 [TTLMonitor] query local.system.indexes query: { expireAfterSeconds: { $exists: true } } ntoreturn:0 ntoskip:0 nscanned:0 keyUpdates:0 locks(micros) r:675203 nreturned:0 reslen:20 663ms Sat Nov 2 05:38:38.625 [conn179] end connection 127.0.0.1:43821 (4 connections now open) Sat Nov 2 05:38:38.625 [conn178] end connection 127.0.0.1:43820 (4 connections now open) Sat Nov 2 05:38:38.625 [conn181] end connection 127.0.0.1:43823 (4 connections now open) Sat Nov 2 05:38:38.625 [conn177] end connection 127.0.0.1:43819 (4 connections now open) Sat Nov 2 05:38:38.625 [conn180] end connection 127.0.0.1:43822 (4 connections now open)

以上就是log文件的末尾部分,前面也很正常,log里没有提到任何服务停止的原因。请问log里面 [conn180]等是什么意思?第180个链接吗?那请问是否有链接数的限制?我记得最大连接数是800,整个log里出现的最大连接数是6呀……

更新app并进行数据库插入的那一个版本,程序运行时候 mongo api 没有任何error,操作很成功,而且进入mongo查看也看得到数据。应该说明链接和数据存取api的调用都没有问题。

但突然想起一个问题,我是在ubuntu下用supervisorctl管理node应用的进程。之前配置supervisorctl的都是用 node server.js 命令,上面更新app时顺带更新了supervisorctl配置文件,改用 nodemon server.js 。

我在想会不会是 supervisorctl 执行 nodemon 命令中间使mongdb服务出现问题了。现在改回 node server.js 命令测试中,一小时过去了一切正常,等待明早再次查看结果……

最大连接数是6 - 6 是同时连接在数据库的上限 (concurrent)

[conn180] - 180 是第180个数据库的连接

我在本地机和aws的ubuntu运行mongodb,没遇到过类似问题。感觉你的云服务有问题。以前试用azure云的时候,linux锁住硬盘,无法写入。这样的问题只能云管理者才能调试。你的问题还是出现的话,建议换一家云服务商。

谢谢你leapon,现在两天过去了,一切正常,而且进行了更多的数据库操作,都没有问题。

我猜应该就是 nodemon 的原因。

ssh链接服务器,在 supervisorctl 中使用 nodemon 命令很快就会出现 mongodb 挂掉的问题。 换用 node 就没事了

@sadleader 朋友的公司也遇到了这个问题,确实是 supervisor 使用 nodemon 命令的问题。

@sadleader nodemon 也太不靠谱了。学习了。

回到顶部