【问题标题】:Failed to set up sockets during startup. dbexit: rc: 48 error in mongodb启动期间无法设置套接字。 dbexit: rc: MongoDB 中的 48 错误
【发布时间】:2016-04-15 00:37:04
【问题描述】:

我现在将 mongo 更新到 3.2 版,但出现此错误。早些时候我没有收到错误。仅在更新 mongo 后,我才收到此错误。我什至尝试再次停止并启动 mongod 服务,但仍然显示相同的错误。

rahul ~ $ mongod
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten] MongoDB starting : pid=6630 port=27017 dbpath=/data/db 64-bit host=rahulcomp24-HP-ENVY-15-Notebook-PC
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten] db version v3.2.0
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten] git version: 45d947729a0315accb6d4f15a6b06be6d9c19fe7
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1f 6 Jan 2014
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten] allocator: tcmalloc
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten] modules: none
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten] build environment:
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten]     distmod: ubuntu1404
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten]     distarch: x86_64
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten]     target_arch: x86_64
2016-01-10T23:39:51.696+0530 I CONTROL  [initandlisten] options: {}
2016-01-10T23:39:51.717+0530 E NETWORK  [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
2016-01-10T23:39:51.717+0530 E NETWORK  [initandlisten]   addr already in use
2016-01-10T23:39:51.717+0530 E STORAGE  [initandlisten] Failed to set up sockets during startup.
2016-01-10T23:39:51.717+0530 I CONTROL  [initandlisten] dbexit:  rc: 48

`

rahul ~ $ mongo
MongoDB shell version: 3.2.0
connecting to: test
Server has startup warnings: 
2016-01-10T23:38:16.095+0530 I CONTROL  [initandlisten] 
2016-01-10T23:38:16.095+0530 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-01-10T23:38:16.095+0530 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-01-10T23:38:16.095+0530 I CONTROL  [initandlisten] 
2016-01-10T23:38:16.095+0530 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-01-10T23:38:16.095+0530 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2016-01-10T23:38:16.095+0530 I CONTROL  [initandlisten] 

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    检查db是否在运行,运行:

    ps aux | grep mongo
    

    找到数据库(例如这里是77071)并杀死它,运行:

    kill -9 77071
    

    【讨论】:

      【解决方案2】:

      找到27017端口上运行的进程:

      C:\Users\hughes> netstat -aon | findstr 27017
        TCP    0.0.0.0:27017          0.0.0.0:0              LISTENING       3344
      

      最后一列显示 PID (3344)。查找该 PID 的进程名称:

      C:\Users\hughes> tasklist /fi "pid eq 3344"
      Image Name                     PID Session Name        Session#    Mem Usage
      ========================= ======== ================ =========== ============
      VirtualBox.exe                3344 Console                    1    101,908 K
      

      对我来说,VirtualBox 的端口转发是问题所在。

      【讨论】:

        【解决方案3】:

        mongod 的输出告诉我们

        listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017"
        

        这意味着某些进程已经在使用同一个套接字。例如,如果我在 mongod 已经运行时尝试运行它,我会得到这个输出。你确定这不是你的情况吗?我猜是这样,因为 mongo shell 似乎连接成功......

        【讨论】:

        • 是的,我确定我没有并行运行任何其他 mongod 服务
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 2011-12-01
        相关资源
        最近更新 更多