mongodb กำลังทำงานอยู่หรือไม่?


117

ฉันได้ติดตั้ง mongodb และไดรเวอร์ php บนเซิร์ฟเวอร์ unix ของฉันแล้ว

คำถามของฉันคือฉันจะรู้ได้อย่างไรว่า mongodb กำลังทำงานอยู่ มีแบบสอบถามบรรทัดคำสั่งง่ายๆเพื่อตรวจสอบสถานะหรือไม่? ถ้าฉันเริ่มครั้งเดียวจากเชลล์มันจะยังคงทำงานต่อไปถ้าฉันออกจากเชลล์ (ดูเหมือนจะไม่เป็นเช่นนั้น) ฉันจะทำให้การเชื่อมต่อ mongodb ต่อเนื่องและเริ่มอัตโนมัติเมื่อรีบูตเซิร์ฟเวอร์ได้อย่างไร

ฉันวิ่งได้:

-bash-3.2 $ su
รหัสผ่าน:
[root @ xxx] # cd / var / lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./mongodb-linux-i686-1.6. 5 / bin / mongod - help สำหรับความช่วยเหลือและตัวเลือกการเริ่มต้น
พ. 23 ก.พ. 08:06:54 MongoDB เริ่มต้น: pid = 7271 port = 27017 dbpath = / data / db / 32-bit

** หมายเหตุ: เมื่อใช้ MongoDB 32 บิตคุณจะถูก จำกัด ข้อมูลไว้ที่ประมาณ 2 กิกะไบต์
** ดูhttp://blog.mongodb.org/post/137788967/32-bit-limitations

** คำเตือน: คุณกำลังทำงานใน OpenVZ นี่รู้เลยว่าแตก !!!

พ. 23 ก.พ. 08:06:54 db version v1.6.5, pdfile version 4.5
Wed 23 ก.พ. 08:06:54 git version: 0eb017e9b2828155a67c5612183337b89e12e291
พ. 23 ก.พ. 08:06:54 sys info: Linux domU-12-31-39-01 -70-B4 2.6.21.7-2.fc8xen # 1 SMP ศ
. 15 ก.พ. 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
พ. 23 ก.พ. 08:06:54 [initandlisten] กำลังรอการเชื่อมต่อบนพอร์ต 27017
พ. 23 ก.พ. 08: 06:54 [websvr] อินเทอร์เฟซผู้ดูแลระบบเว็บฟังบนพอร์ต 28017

ถ้าฉันเปิดเปลือกแยกฉันสามารถเชื่อมต่อกับ mongodb:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB เชลล์เวอร์ชัน: 1.6.5
เชื่อมต่อกับ: ทดสอบ
db.foo.find ()
{" _id ": ObjectId (" 4d63d7d3eb95985ab19c8feb ")," a ": 1}

อย่างไรก็ตามหากฉันปิดเชลล์เริ่มต้นฉันไม่สามารถเชื่อมต่อได้:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB เชลล์เวอร์ชัน: 1.6.5 กำลัง
เชื่อมต่อกับ: ทดสอบ
23 ก.พ. 08:25:10 ข้อผิดพลาด : ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ 127.0.0.1 (anon):
ข้อยกเว้น1154 : การเชื่อมต่อล้มเหลว

คำตอบ:


144

ตรวจสอบด้วย:

   ps -edaf | grep mongo | grep -v grep  # "ps" flags may differ on your OS

หรือ

   /etc/init.d/mongodb status     # for MongoDB version < 2.6

   /etc/init.d/mongod status      # for MongoDB version >= 2.6

หรือ

   service mongod status

เพื่อดูว่า mongod ทำงานอยู่หรือไม่ (คุณต้องรูทเพื่อทำสิ่งนี้หรือนำหน้าทุกอย่างด้วยsudo) โปรดทราบว่าคำสั่ง 'grep' จะแสดงเป็นกระบวนการแยกกันเสมอ

ตรวจสอบไฟล์บันทึก /var/log/mongo/mongo.log เพื่อดูว่ามีปัญหาที่รายงานหรือไม่


20
ควรเป็น: สถานะบริการ mongodb
MhdSyrwan

12
คุณยังสามารถทำไฟล์pgrep mongo.
slm

1
ฉันได้รับสิ่งนี้: 501 5365 418 0 16:10 pm ttys000 0: 00.00 grep mongo หมายความว่ากำลังทำงานอยู่หรือเปล่า
L1ghtk3ira

1
สถานะ mongod ของบริการไม่ทำงานสำหรับฉัน แต่สถานะ mongodb ของบริการใช้งานได้
viks

5
จาก mongo 2.6 บริการเป็น mongod ก่อนหน้านี้ mongodb สับสนใช่
tsukimi

40

ฉันหา:

ps -ax | grep mongo

เพื่อให้สอดคล้องกันมากขึ้น ค่าที่ส่งคืนสามารถใช้เพื่อตรวจสอบจำนวนอินสแตนซ์ของ mongod ที่กำลังทำงานอยู่


6
นอกจากนี้คุณอาจต้องการพิจารณาเพิ่มตัวกรองเพื่อไม่ส่งคืนกระบวนการ grep ที่คุณกำลังเรียกใช้ ดังนั้น: ps -ax | grep -v grep | grep mongo
DCaugs

34

สำหรับการตรวจสอบอย่างรวดเร็วว่า mongodb กำลังทำงานอยู่หรือไม่เคล็ดลับ nc ฉบับย่อนี้จะแจ้งให้คุณทราบ

nc -zvv localhost 27017

คำสั่งดังกล่าวถือว่าคุณกำลังรันบนพอร์ตดีฟอลต์บน localhost

สำหรับการเริ่มต้นอัตโนมัติคุณอาจต้องการดูที่หัวข้อนี้


1
ใช่วิธีนี้ใช้ได้หากตรวจสอบว่ามีบางสิ่งกำลังฟังพอร์ตอยู่หรือไม่ หากเป็นกรณีที่การส่งออกจะมีหรืออื่น ๆ27017 open Connection refused
Alexander



8

ถูกต้องการปิดเชลล์จะหยุด MongoDB ลองใช้--forkบรรทัดคำสั่ง arg สำหรับกระบวนการ mongod ซึ่งทำให้รันเป็น daemon แทน ฉันไม่ใช่กูรู Unix แต่ฉันแน่ใจว่าต้องมีวิธีที่จะทำให้มันเริ่มอัตโนมัติเมื่อเครื่องบูทขึ้น

เช่น

mongod --fork --logpath /var/log/mongodb.log --logappend

ตรวจสอบเอกสารเต็มรูปแบบในการเริ่มและการหยุด Mongo


ขอบคุณ ฉันได้รับสิ่งนี้: [root@xxx lib]# ./mongodb-linux-i686-1.6.5/bin/mongod --fork --logpath /var/log/m ongodb.log --logappend all output going to: /var/log/mongodb.log forked process: 7518แต่เมื่อฉันปิดเชลล์และเปิดใหม่ฉันได้รับConnect failed

อืมใช้ได้กับฉัน (Ubuntu 64bit VM, Mongo v1.7.6) ดังนั้นฉันไม่แน่ใจว่าทำไมมันถึงไม่เหมาะกับคุณ tbh หากคุณไม่สามารถใช้งานได้ทางที่ดีที่สุดอาจโพสต์ไว้ในฟอรัม mongodb: groups.google.com/group/mongodb-user
AdaTheDev

แต่ฉันเริ่มต้นด้วย&และตอนนี้ฉันไม่พบ processid
bobobobo

@bobobobo - คุณพยายามค้นหารหัสกระบวนการอย่างไร
Tass

ps -e | grep mongod
bobobobo

3

คุณสามารถใช้คำสั่งด้านล่างเพื่อตรวจสอบสถานะ MongoDB เช่นsudo service MongoDB statusซึ่งจะแสดงสถานะของบริการ MongoDB เหมือนกับภาพหน้าจอ:

สถานะ MongoDB


2

อาจเป็นเพราะฉันไม่ได้ปิดเซิร์ฟเวอร์ dev อย่างถูกต้องหรือด้วยเหตุผลที่คล้ายกัน ในการแก้ไขให้ถอดล็อคและเริ่มเซิร์ฟเวอร์ด้วย: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb


1

ฉันรู้ว่านี่ใช้สำหรับ php แต่ฉันมาที่นี่เพื่อหาวิธีแก้ปัญหาสำหรับโหนด ใช้ mongoskin:

mongodb.admin().ping(function(err) {
    if(err === null)
        // true - you got a conntion, congratulations
    else if(err.message.indexOf('failed to connect') !== -1)
        // false - database isn't around
    else
        // actual error, do something about it
})

ด้วยไดรเวอร์อื่นคุณสามารถพยายามทำการเชื่อมต่อและหากล้มเหลวคุณจะรู้ว่าเซิร์ฟเวอร์ Mongo ล่ม Mongoskin จำเป็นต้องโทรออกจริงๆ (เช่น ping) เพราะมันเชื่อมต่ออย่างเฉื่อยชา สำหรับ php คุณสามารถใช้วิธี try-to-connect สร้างสคริปต์!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.