Linux

帶有初始化腳本的奇怪行為啟動過程

  • April 23, 2013

使用初始化腳本啟動程序時,我看到了一些奇怪的行為。很可能我在做一些愚蠢的事情,但也許有人可以讓我知道可能導致這種行為的原因:

$$ Background: the process is mongodb’s monogod running as a config server (2.4), and I’m running on Debian 6. The process runs under user ‘mongodb’, and I’m issuing commands via SSH as a non-root user $$

  • 當伺服器啟動時,程序似乎正常啟動(我可以通過 ps -ef 看到它,並且生成了一個 mongodb.pid 文件)。
  • 如果我試圖通過 停止該過程sudo /etc/init.d/mongodb stop,那麼奇怪的事情就開始了:我明白了mongodb apparently not running。(雖然程序和 pid 仍然存在)。
  • 當然,如果我sudo /etc/init.d/mongodb start現在嘗試這樣做,我會得到“失敗”並且日誌中出現關於已使用埠的錯誤,這是可以預料的,因為實際上已經有一個實例正在執行。
  • 如果我殺死 -15 程序然後嘗試sudo /etc/init.d/mongodb start我得到更多的怪異:在控制台中我得到Starting database: mongodb failed!(沒有更多資訊)。但是……該過程現在正在執行,並且在日誌中我沒有看到任何錯誤,它看起來好像該過程已正常啟動。
  • 如果我嘗試停止這個過程, sudo /etc/init.d/mongodb stop我會得到mongodb apparently not running.

有問題的腳本在這裡

有任何想法嗎?謝謝!

編輯:如果它與 mongo 相關,這裡是我的配置伺服器的 mongodb.conf:

configsvr=true

dbpath=/data/configdb

logpath=/var/log/mongodb/mongodb.log
logappend=true

port = 28222
bind_ip = a_public_ip,127.0.0.1,a_private_ip

auth = true
keyFile = /srv/mongodb/keyfile

nohttpinterface = true

fork = true

另外:我Starting database: mongodb failed!在啟動螢幕期間看到(但仍然有一個程序在啟動後似乎正常執行)。

如果您在該伺服器上執行了多個實例,或者其他可能會在此處放置另一個值的東西:

PIDFILE=/var/run/$NAME.pid

這將導致您在此處看到的問題,它將查找具有該文件中 ID 的程序,以確定mongod在關閉它時是否以及要停止的 PID。

您還應該查看該文件的權限,以確保該程序可以訪問它並在啟動時對其進行更新。

基本上,我們需要為您使用的每個 init 腳本設置單獨的 $NAME 值以避免衝突,並確保將正確的 PID 值放入該文件以使服務按預期工作。

如果一切看起來都不錯,那麼我猜你遇到了這裡描述的問題:

https://jira.mongodb.org/browse/SERVER-7254

numactl 被呼叫(安裝時應該如此)似乎會導致將不正確的 PID 寫入 PID 文件。我們正在尋找對此進行故障排除的回饋,因此,如果您可以添加您的經驗(以及您是否安裝了 numactl),我們將不勝感激。

引用自:https://serverfault.com/questions/501700