mongodb启动报错ERROR: child process failed, exited with error number 14

今天准备对测试环境的mongodb进行压测,测试一下单实例的情况亿级数据在建立普通索引的情况下的查询性能。然而出师未捷身先死,在插入数据的时候被我开的五个线程搞的锁死了(因为mongo的索引默认是实时建立,在过程中会锁死该集合所有操作,无法读写,在数据量大的时候就会出现锁死的假象)T T .. 。 

接着去服务器上命令关闭,结果一样半天关不了......然后一想反正是测试环境,一怒之下杀了进程(当时我的内心:!哇咔咔咔让你拽,不行了吧!哈哈哈哈哈......)。

然后重启的时候我又懵逼了...发现重启不了了,报了个ERROR: child process failed, exited with error number 14错误TT |||。好吧搜呗,看了一些类同问题有让删.log的还有让删.lock的但最终的解决不了问题。后来可能是因为程序员改BUG的习惯我突然想起了查log,当初配mongo的时候我清晰的记的mongo的log体系很健全(废话,毕竟也是一个很成熟的DB)。然后我就进到配的日志路径下,打开日志(因为之前查询解决方案把之前的日志移到别的地方了,所以cat的时候一下就打开了),打开后一看,原因就很明显了!!!大致是说之前关闭的时候索引未建立完,所以造成这次启动不了!并提示可以使用--noIndexBuildRetry跳过该所以的建立。

于是我用了--noIndexBuildRetry命令,完美启动了!然后我又特意看了一下我的数据发现之前的那个未完成的索引没了,所以mongo的跳过就是说直接删掉了,于是这次我打开日志,然后建立索引好处是能清晰的看到进度。另外索引建立还可以使用后台的方式createIndex({“key”:1},{background:true})这样可以在不影响读写的情况下后台建立索引,好处就是不用锁死该集合了,坏处就是整个过程会更慢一些。

下面总结一下解决该问题步骤:

1 进入mongo的日志目录打开日志文件(一般叫mongodb.log)

2 查看具体原因

3 分析问题,得出结论。像我这次就是./mongod --config /usr/local/mongodb/bin/conf/mongodb.conf --noIndexBuildRetry解决了问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值