gpt4 book ai didi

mongodb 3.0.3 Ubuntu 14.04.2 AWS m3.medium Upstart PID 不匹配

转载 作者:行者123 更新时间:2023-12-04 18:51:56 25 4
gpt4 key购买 nike

是否可以通过 upstart 运行 mongod 并通过 start-stop-daemon 或其他方式跟踪 PID?

在 mongodb 文档页面上按照这些说明进行 ubuntu 安装后:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org

在此之前已删除 ubuntu 软件包的所有残余。

我现在通过 Upstart 在启动时有一个运行的 mongod 实例。但由于某种原因,Upstart 和 initctl 并不知道。它启动良好,但 initctl 认为它处于停止/等待状态。

以机智:

我的/etc/mongod.conf.yml:
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true

systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
logRotate: rename
component:
accessControl:
verbosity: 2

net:
bindIp: 127.0.0.1
port: 27017

processManagement:
fork: true

setParameter:
enableLocalhostAuthBypass: false

security:
authorization: disabled

我的/etc/init/mongod.conf Upstart 脚本(重命名 mongodb.pidmongod.pid ):
# Ubuntu upstart file at /etc/init/mongod.conf

# Recommended ulimit values for mongod or mongos
# See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
#
limit fsize unlimited unlimited
limit cpu unlimited unlimited
limit as unlimited unlimited
limit nofile 64000 64000
limit rss unlimited unlimited
limit nproc 32000 32000

kill timeout 300 # wait 300s between SIGTERM and SIGKILL.

pre-start script
DAEMONUSER=${DAEMONUSER:-mongodb}
if [ ! -d /var/lib/mongod ]; then
mkdir -p /var/lib/mongodb && chown mongodb:mongodb /var/lib/mongodb
fi
if [ ! -d /var/log/mongod ]; then
mkdir -p /var/log/mongodb && chown mongodb:mongodb /var/log/mongodb
fi

touch /var/run/mongod.pid

chown $DAEMONUSER /var/run/mongod.pid;

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

end script

start on runlevel [2345]
stop on runlevel [06]

script
ENABLE_MONGOD="yes"
CONF=/etc/mongod.conf.yml
DAEMON=/usr/bin/mongod
DAEMONUSER=${DAEMONUSER:-mongodb}

if [ -f /etc/default/mongod ]; then . /etc/default/mongod; fi

# Handle NUMA access to CPUs (SERVER-3574)
# This verifies the existence of numactl as well as testing that the command works
NUMACTL_ARGS="--interleave=all"
if which numactl >/dev/null 2>/dev/null && numactl $NUMACTL_ARGS ls / >/dev/null 2>/dev/null
then
NUMACTL="$(which numactl) -- $NUMACTL_ARGS"
DAEMON_OPTS=${DAEMON_OPTS:-"--config $CONF"}
else
NUMACTL=""
DAEMON_OPTS="-- "${DAEMON_OPTS:-"--config $CONF"}
fi

if [ "x$ENABLE_MONGOD" = "xyes" ]
then
exec start-stop-daemon --start \
--chuid $DAEMONUSER \
--pidfile /var/run/mongod.pid \
--make-pidfile \
--exec $NUMACTL $DAEMON $DAEMON_OPTS
fi
end script

重新启动后,我看到了这个:
$ ps aux | grep mongo
mongodb 1085 0.2 1.1 363764 46704 ? Sl 11:57 0:06 /usr/bin/mongod --config /etc/mongod.conf.yml

一切似乎都很好。但是 mongod.pid 文件不存储与进程相同的 pid:
$ cat /var/run/mongod.pid
985

应该是 1085。

解决此问题的最佳方法是什么,以便 Upstart 可以访问实际的 PID?

更新:尝试添加 expect daemonexpect fork行为发生了一些变化:initctl 现在看到一个 PID 并表示 mongod 正在运行,但 PID 错误。这意味着任何后续命令,如 sudo stop mongodsudo start mongod会挂。 fork 或 daemon 似乎都不能解决这个问题。我错过了什么?

最佳答案

好吧,我脸上有点鸡蛋 - 我忽略了一个事实,我 Shiny 的新 /etc/mongod.conf.yml包含 processManagement.fork: true .将此设置为 false 允许 start-stop-daemon捕获适当的PID。

关于mongodb 3.0.3 Ubuntu 14.04.2 AWS m3.medium Upstart PID 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224231/

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