【问题标题】:MongoDB: ERROR: child process failed, exited with error number 14MongoDB:错误:子进程失败,以错误号 14 退出
【发布时间】:2021-08-07 16:40:49
【问题描述】:

我在 Mac 上运行 MongoDB:

Shave:mongodb_simple Logan$ ./bin/mongod -f conf/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 5110
ERROR: child process failed, exited with error number 14

那是因为我以错误的方式关闭它吗?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您以错误的方式启动并可能关闭了 mongo。

    1.启动 MONGODB

    要在后台启动 mongo,输入:mongod --dbpath /data/db --fork --logpath /dev/null

    • /data/db 是数据库的位置。如果您还没有创建一个 => 输入:mkdir /data/db
    • --fork 表示你想在后台启动 mongo - deamon。
    • --logpath /dev/null 表示您不想登录 - 您可以通过将 /dev/null 替换为类似 /var/log/mongo.log 的路径来更改它

    2。关闭 MONGODB

    通过键入:mongo 然后 use admindb.shutdownServer() 连接到您的 mongo。就像在mongoDB中解释的一样

    如果此技术由于某种原因不起作用,您可以随时终止该进程。

    1. 如果您的 mongodb 在端口 27017 上运行,请键入:lsof -i:27017 查找 mongodb 进程 PID
    2. 键入kill <PID>,将<PID> 替换为您在上一条命令中找到的值。

    【讨论】:

    • 是的,这就是我的情况,我正在运行一个虚拟机,然后我的笔记本电脑突然死机了。因为我只是创建了几个测试,所以我摆脱了整个数据文件夹。
    【解决方案2】:

    检查文件/tmp/mongodb-27017.sock的所有权

    应该是mongod。我得到了同样的错误,因为它是root:root

    【讨论】:

    • 感谢您的提示。对我来说,它有点不同,我将所有权更改为我的用户,它开始为我工作。
    • 哇,令人难以置信的是,我刚刚在全新安装时遇到了这种情况,安装后 5 天出乎意料。我想知道是什么原因造成的?并且在服务重启时会再次发生?
    • 谢谢!这也是我的问题。如果您直接在CLI 上以用户root 的身份启动mongod,而不是发出systemctl start mongod,则可能会出现这种情况,这将以mongod 启动。
    【解决方案3】:

    对我来说这是ulimit 问题,mongo 无法打开太多文件。

    使用ulimit -n 10000

    但是,作为查看 mongo 日志文件的通用指针,它们会告诉您进一步查看的位置。通常日志文件位于/var/log/mongo.log,但请查看您的 mongo 配置文件。

    【讨论】:

      【解决方案4】:

      这是因为您没有在传递给-f 选项的配置文件中正确配置您的mongod 实例。 重新访问您的配置文件并确保一切配置正确。

      【讨论】:

      • 呃,这是我的 mongo.conf:port = 12345 dbpath = data logpath = log/mongod.log fork = true
      • @Luster 看起来你不是用 YAML [docs.mongodb.org/manual/reference/configuration-options/] 格式写的。是这样吗?
      • 当我收到此错误时,是因为我的 /tmp/mongodb-27017.sock 文件归 root 所有。即使-v 选项也无济于事。我最终删除了我的所有配置文件信息,因此它使用了默认值,THEN 它最终给了我正确的错误消息。
      • 如果其中一个侦听套接字错误,则可能是这样,例如如果它被配置为绑定到::1,即使 IPv6 被禁用,在例如日志文件中var/log/mongodb/mongod.log 然后你会找到类似于 "Cannot assign requested address for socket" 的行。
      • 就我而言,这是因为root 拥有/var/lib/mongo 中的一些文件
      【解决方案5】:

      通过将/var/lib/mongodb/ 下的所有文件的所有者更改为mongodb,它开始为我工作:

      chown mongodb:mongodb -R /var/lib/mongodb/
      

      【讨论】:

      • 最新版本:chown mongod:mongod -R /var/lib/mongod
      【解决方案6】:

      这对我有用:

      在终端运行

      sudo rm -rf mongod.lock
      export LC_ALL=C
      

      然后

      sudo mongod --fork --config /xxxx/xx/mongod.conf --logpath /xxx/log/mongodb/mongodb.log
      

      【讨论】:

        【解决方案7】:

        检查 mongod 是否使用 pgrep mongodps -aef | grep mongodsystemctl status mongod 运行

        停止并重新启动它以检查问题是否消失 如果你用 mongod -f /etc/mongod.conf 启动 mongod,用 pkill -9 mongod 杀死它,然后用 mongod -f /etc/mongod.conf 启动它 如果您将其作为服务运行,请使用systemctl restart mongod 重新启动它。

        如果重启不起作用,请通过/var/log/message/var/log/mongodb/mongod.log 文件找出问题所在。 使用tail -f /var/log/messagetail -f /var/log/mongodb/mongod.log 来检查您的操作时的输出。

        for example:
            1.
                Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted
                    delete the sock file with `rm`
            
            
            2.
                WiredTiger error (13) [1596090168:830936][25997:0x7fe22f208b80], wiredtiger_open: __posix_open_file, 672: /data/mongo/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1596090168:830936][25997:0x7fe22f208b80], wiredtiger_open: __posix_open_file, 672: /data/mongo/WiredTiger.turtle: handle-open: open: Permission denied
                Failed to start up WiredTiger under any compatibility version
                Reason: 13: Permission denied
                
                    check the file permission or owner with `ls` then change to the wright permission with `chmod` or right owner with `chown`
        

        【讨论】:

          【解决方案8】:

          我删除文件:/tmp/mongodb-27017.sock 然后重启mongod

          【讨论】:

            【解决方案9】:

            我也遇到了同样的问题,但我的是系统时钟关闭了,所以我的 SSL 证书在技术上是无效的。更改为当前日期和时间工作 date --set "<DD M Y H:M>"
            仅通过查看 mongodb 日志发现此

            【讨论】:

              【解决方案10】:

              我在 GCP 托管的 Compute Engine 实例上遇到了这个问题。
              由于这是 Google 搜索该问题的最佳答案,因此我将包含对我有用的内容,并且是根据 MongoDB (jira-link) 记录的错误

              在 linux 系统上,如果运行 mongod 的用户没有设置区域设置或区域设置配置错误,则 mongod 无法开始打印堆栈跟踪。

              这个问题可以通过几个步骤来解决:

              1. 安装所需的语言包 (ref):
              sudo apt-get install language-pack-XX
              
              1. 运行更新语言环境 (ref):
              sudo update-locale
              
              1. 重新启动会话,然后再次检查相同的 mongo 命令

              2. 上面的 IFF 不起作用(它不适合我),只需手动将以下内容添加到 /etc/default/locale (ref) 的文件中:

              LC_ALL=en_US.UTF-8
              LANG=en_US.UTF-8
              
              1. 只是为了欣赏没有关于未设置 LC_ALL 的持续警告,请运行以下命令:
              sudo dpkg-reconfigure locales
              

              就是这样,您的 MongoDB 实例现在应该可以使用了!

              【讨论】:

                【解决方案11】:

                在我的 mongodb 设置中,为了将特定版本的 mongoDB 内联到现有服务器并避免将二进制文件放在根磁盘下,我更改了不同目录中所有 mongo 二进制文件的路径。我不得不使用rpm 选项而不是yum 选项(因为 yum 只安装了最新版本,尽管提到了特定版本)。

                rpm -ivh --prefix=/apps/mongodb /apps/mongo_rpm_packages/mongodb-org-*.rpm 
                

                注意:存放二进制文件的默认路径是/var/lib/mongo

                此方法不允许mongod 用户所需的权限或未正确配置,因此,我将mongod.service 文件中的usergroup 更改为root 用户并成功启动该过程使用:

                service start mongod
                

                【讨论】:

                  【解决方案12】:

                  使用 --shutdown

                  mongod --shutdown
                  

                  然后

                  service mongod restart
                  

                  成功了!

                  https://docs.mongodb.com/manual/tutorial/manage-mongodb-processes/#use-shutdown

                  【讨论】:

                    【解决方案13】:

                    运行这个并启动 mongod

                    /tmp/mongodb-27017.sock
                    
                    systemctl start mongod
                    

                    【讨论】:

                      猜你喜欢
                      • 2017-01-10
                      • 1970-01-01
                      • 2016-12-14
                      • 2013-04-04
                      • 2015-04-19
                      • 2017-07-20
                      • 2022-07-09
                      • 2022-07-20
                      • 1970-01-01
                      相关资源
                      最近更新 更多