MongoDB 服务器崩溃,显示以下错误

MongoDB 服务器崩溃,显示以下错误

我在装有 Ubuntu Server 12.04 的 VMWare VM 中运行了一个 MongoDB 实例。服务器突然崩溃了,当我尝试重新启动它时,出现以下错误:

jonathanong@ubuntu:~/mongodb/solo$ /usr/bin/mongod --fork --port 27027 --dbpath ~/mongodb/solo --logpath ~/mongodb/solo/mongodb.log
Thu Jan 17 00:54:25   Assertion failure getcwd( buffer , 1000 ) src/mongo/db/cmdline.cpp 188
0xaffd31 0xac65cd 0x6878a8 0x55f070 0x565d39 0x7f2b226d176d 0x558149 
 /usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xaffd31]
 /usr/bin/mongod(_ZN5mongo12verifyFailedEPKcS1_j+0xfd) [0xac65cd]
 /usr/bin/mongod(_ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE+0x4a38) [0x6878a8]
 /usr/bin/mongod() [0x55f070]
 /usr/bin/mongod(main+0x9) [0x565d39]
 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f2b226d176d]
 /usr/bin/mongod(__gxx_personality_v0+0x471) [0x558149]
Thu Jan 17 00:54:25 terminate() called, printing stack (if implemented for platform):
0xaffd31 0x55840e 0x7f2b23036846 0x7f2b23036873 0x7f2b2303696e 0xac6776 0x6878a8 0x55f070 0x565d39 0x7f2b226d176d 0x558149 
 /usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xaffd31]
 /usr/bin/mongod(_ZN5mongo11myterminateEv+0x3e) [0x55840e]
 /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5846) [0x7f2b23036846]
 /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5873) [0x7f2b23036873]
 /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb596e) [0x7f2b2303696e]
 /usr/bin/mongod(_ZN5mongo12verifyFailedEPKcS1_j+0x2a6) [0xac6776]
 /usr/bin/mongod(_ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE+0x4a38) [0x6878a8]
 /usr/bin/mongod() [0x55f070]
 /usr/bin/mongod(main+0x9) [0x565d39]
 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f2b226d176d]
 /usr/bin/mongod(__gxx_personality_v0+0x471) [0x558149]
Thu Jan 17 00:54:25 Got signal: 6 (Aborted).

Thu Jan 17 00:54:25 Backtrace:
0xaffd31 0x558bb9 0x7f2b226e64a0 0x7f2b226e6425 0x7f2b226e9b8b 0x558413 0x7f2b23036846 0x7f2b23036873 0x7f2b2303696e 0xac6776 0x6878a8 0x55f070 0x565d39 0x7f2b226d176d 0x558149 
 /usr/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xaffd31]
 /usr/bin/mongod(_ZN5mongo10abruptQuitEi+0x399) [0x558bb9]
 /lib/x86_64-linux-gnu/libc.so.6(+0x364a0) [0x7f2b226e64a0]
 /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f2b226e6425]
 /lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x7f2b226e9b8b]
 /usr/bin/mongod(_ZN5mongo11myterminateEv+0x43) [0x558413]
 /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5846) [0x7f2b23036846]
 /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5873) [0x7f2b23036873]
 /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb596e) [0x7f2b2303696e]
 /usr/bin/mongod(_ZN5mongo12verifyFailedEPKcS1_j+0x2a6) [0xac6776]
 /usr/bin/mongod(_ZN5mongo7CmdLine5storeEiPPcRN5boost15program_options19options_descriptionES6_RNS4_30positional_options_descriptionERNS4_13variables_mapE+0x4a38) [0x6878a8]
 /usr/bin/mongod() [0x55f070]
 /usr/bin/mongod(main+0x9) [0x565d39]
 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f2b226d176d]
 /usr/bin/mongod(__gxx_personality_v0+0x471) [0x558149]

这是从 mongodb-10gen 下载的 MongoDB 2.2.2:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

有任何想法吗?

编辑:我刚刚从头创建了一个新的虚拟机,它完全没问题。所以这对我来说不是一个问题,因为我计划使用托管主机。不过,知道问题所在还是不错的!

答案1

看起来你没事,但仅供参考:这刚刚发生在我身上。几乎相同的堆栈跟踪。问题是,当我重新启动 mongod 时,我在这个 shell 中的当前目录恰好是我不久前删除的目录(在另一个 shell 中)。这就是 getcwd 失败的原因。

答案2

首先要看的是崩溃顶部提供的代码行:

https://github.com/mongodb/mongo/blob/v2.2/src/mongo/db/cmdline.cpp#L188

这基本上是获取当前工作目录。崩溃的地方很奇怪 - 这表明文件系统级别存在一个相当基本的问题 - 目录未找到,或者以其他方式损坏。

根据 addr2line(参见解析堆栈跟踪)第一行相关行(0x6878a8)指向此处:

https://github.com/mongodb/mongo/blob/v2.2/src/mongo/db/cmdline.cpp#L349

这再次表明在进入相关文件夹(可能是 /var/lib/mongodb 或类似文件夹)时出现了某种问题mongod。这次相关错误是:

分叉服务器进程时无法 chdir()

再次指出在访问程序试图使用的文件系统/文件夹方面的类似根本原因。

答案3

根据我的经验,由于定位问题,我得到了这样的错误:“SEVERE:terminate() called,printing stack”。类型:

导出 LC_CTYPE="en_US.UTF-8"

可能会解决问题。

相关内容