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

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

置顶 2018年08月16日 20:17:48 RD丨Eric 阅读数 5549更多程序员

分类专栏: DBmongodb

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接和本声明。服务器

本文连接:https://blog.csdn.net/EricLYN/article/details/81747785性能

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

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

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

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

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

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

2 查看具体缘由

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

相关文章
相关标签/搜索