gpt4 book ai didi

linux - 第一次启动 mongod 会启动多个 mongod 进程

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:37 25 4
gpt4 key购买 nike

给定一个干净的 mongo 数据目录,我运行这样的启动脚本(我意识到我可以使用 service,但这是一个不同的问题,我使用这个脚本作为解决方法):

>$ cat startMongo.sh
nohup sudo mongod --rest --fork --config /etc/mongod.conf > logs/mongo.log 2>&1 &

问题是这会以某种方式启动很多进程:

>$ ps -efw | grep mongo
root 7038 1 0 21:29 pts/0 00:00:00 sudo mongod --rest --fork --config /etc/mongod.conf
root 7039 7038 0 21:29 pts/0 00:00:00 mongod --rest --fork --config /etc/mongod.conf
root 7040 7039 0 21:29 ? 00:00:00 mongod --rest --fork --config /etc/mongod.conf
root 7041 7040 10 21:29 ? 00:00:01 mongod --rest --fork --config /etc/mongod.conf

认为这是在 Mongo 进行一些预分配时发生的,我可以在日志文件中看到。过了一会儿,do 消失了:

>$ ps -efw | grep mongo
root 7041 1 4 21:29 ? 00:00:01 mongod --rest --fork --config /etc/mongod.conf

我的问题是这是否应该发生?我在 Windows 中尝试了同样的方法,但没有发现问题。我确信这直到最近才在 Ubuntu 中出现(我从 2.6 升级到 3)。

最佳答案

我尝试运行 mongod --fork 并得到:

即将 fork 子进程,等待服务器准备好连接。

我想这意味着主进程在实际派生到最终的监听器进程之前做了一些事情,这些事情可以分配日志文件。我还得到了您描述的多进程状态。

我在没有 --fork 的情况下尝试了相同的命令,并且没有额外的进程。

所以您的想法是正确的,额外生成的 mongod 用于预分配,但仅在 --fork 模式下。

无论如何,此时使用 nohup 是没有用的,因为如果您使用 --fork 运行 mongo,您也会将其发送到后台模式:您的 nohup 日志将只记录类似的东西:

about to fork child process, waiting until server is ready for connections. 
forked process: 7306
child process started successfully, parent exiting

关于linux - 第一次启动 mongod 会启动多个 mongod 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com