ไม่สามารถเริ่ม mongodb โลคัลเซิร์ฟเวอร์


167

ฉันใหม่กับ mongodb .. เมื่อฉันพยายามใช้ mongodb ในเครื่องเซิร์ฟเวอร์ด้วยmongodคำสั่งมันล้มเหลวในการทำงานและโยนข้อผิดพลาดนี้ ..

/usr/lib/mongodb/mongod --help for help and startup options
Sat Jun 25 09:38:51 MongoDB starting : pid=1782 port=27017 dbpath=/data/db/ 32-bit 

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations

Sat Jun 25 09:38:51 db version v1.6.3, pdfile version 4.5
Sat Jun 25 09:38:51 git version: nogitversion
Sat Jun 25 09:38:51 sys info: Linux vernadsky 2.6.24-27-server #1 SMP Fri Mar 12 01:45:06 UTC 2010 i686 BOOST_LIB_VERSION=1_42
Sat Jun 25 09:38:51 [initandlisten] *** warning: spider monkey build without utf8 support.  consider rebuilding with utf8 support
Sat Jun 25 09:38:51 [initandlisten] waiting for connections on port 27017
Sat Jun 25 09:38:51 [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Sat Jun 25 09:38:51 [initandlisten]   addr already in use
Sat Jun 25 09:38:51 [initandlisten] now exiting
Sat Jun 25 09:38:51 dbexit: 

Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close listening sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to flush oplog...
Sat Jun 25 09:38:51 [initandlisten] shutdown: going to close sockets...
Sat Jun 25 09:38:51 [initandlisten] shutdown: waiting for fs preallocator...
Sat Jun 25 09:38:51 [initandlisten] shutdown: closing all files...
Sat Jun 25 09:38:51     closeAllFiles() finished

Sat Jun 25 09:38:51 [initandlisten] shutdown: removing fs lock...
Sat Jun 25 09:38:51 dbexit: really exiting now

ฉันพยายามลบmongod.lockไฟล์ ... ฉันวิ่งmongod --repair.. ฉันเปลี่ยนสิทธิ์ในการใช้mongod.lockไฟล์เช่นกัน

แต่ดูเหมือนว่าไม่มีอะไรทำงาน .. มันแสดงข้อผิดพลาดเดียวกัน .. ฉันควรทำอย่างไร?

ฉันยังได้ติดตั้ง git เวอร์ชั่น 1.7.4.1 ด้วย แต่มันแสดงว่า nogitversion มีข้อผิดพลาด ..


ฉันมีปัญหาเดียวกันและวิธีนี้ใช้ได้กับฉันstackoverflow.com/questions/5798549/…
Eddie

คำตอบ:


176

ลอง:

sudo service mongod stop
sudo mongod

หากต้องการหยุดบริการ mongodb ที่ใช้งานอยู่ในปัจจุบันให้คุณเริ่มบริการ mongodb ใหม่


1
ฉันยังได้รับข้อความบริการ แต่ตัดสินใจที่จะเพิกเฉยและลองรีสตาร์ทอีกครั้งด้วย "sudo mongod" และหลังจากนั้นก็ใช้งานได้ในที่สุด
kpierce8

2
ไม่ควรเป็น mongod (ไม่ใช่ mongodb)? อิงจากdocs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ …
xavier

5
sudo service mongodb stopทำงานกับฉันใน Ubuntu 14.10
Joe Corneli

1
ไม่มีคำสั่งให้บริการบน OS X ได้คือหากคุณติดตั้ง Mongo ผ่าน homebrew brew servicesคุณสามารถใช้ (ผ่านunix.stackexchange.com/questions/155715/… )
Charlie Stanard

1
@HarshaMV `บริการเบียร์หยุด <formula>`
ยาโคบ

149

อย่าฆ่ากระบวนการโดยใช้สัญญาณ -9 เนื่องจากอาจทำให้เกิดความเสียหาย: http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

ใช้sudo killall -15 mongodแทน


2
นี่ไม่ได้ตอบคำถามเดิม
Beau Grantham

8
killall mongodทำสิ่งเดียวกันด้วย การ-15บอกkillallให้ส่งสัญญาณ SIGTERM ซึ่งทำตามค่าเริ่มต้น
T Blank

4
ที่จริงแล้วการ Killall นั้นใช้งานได้จริงสำหรับฉันแทนที่จะพยายามหยุดบริการ ดังนั้นแม้ว่ามันจะไม่ตอบคำถาม นั่นเป็นประโยชน์
André Pena

59

Andreas Jung:

"Sat Jun 25 09:38:51 [initandlisten] Listen (): การผูก () errno ล้มเหลว: 98 ที่อยู่ที่ใช้งานแล้วสำหรับซ็อกเก็ต: 0.0.0.0:27017

เป็นการพูดด้วยตนเอง

อินสแตนซ์อื่นของ mongod กำลังทำงานและจัดสรรพอร์ตเริ่มต้นของ MongoDB ซึ่งก็คือ 27017

อาจฆ่ากระบวนการอื่นหรือใช้พอร์ตอื่น "

ในกรณีนี้ให้พิมพ์คำสั่งต่อไปนี้

ps wuax | grep mongo

คุณควรเห็นสิ่งที่มีลักษณะเช่นนี้

User           31936   0.5 0.4 2719784 35624   ?? S     7:34pm   0:09.98 mongod
User           31945   0.0 0.0 2423368   184 s000 R+   8:24pm   0:00.00 grep mongo

ตอนนี้ป้อนคำสั่ง kill สำหรับอินสแตนซ์ mongod (31936 ในกรณีนี้):

kill 31936

29

เสาร์ 25 มิถุนายน 09:38:51 น [initandlisten] Listen (): bind () errno ล้มเหลว: 98 ที่อยู่ที่ใช้งานแล้วสำหรับซ็อกเก็ต: 0.0.0.0:27017

เป็นการพูดด้วยตนเอง

อินสแตนซ์อื่นของ mongod กำลังทำงานและจัดสรรพอร์ตเริ่มต้นของ MongoDB ซึ่งก็คือ 27017

ฆ่ากระบวนการอื่นหรือใช้พอร์ตอื่น


47
พบสิ่งนี้ในหน้าเริ่มต้น ... ** เมื่อ mongodb ** ได้รับการติดตั้ง ผ่านความถนัดมันกำลังทำงานอยู่ (ดังนั้นในตัวอย่างคุณไม่ จำเป็นต้องเริ่มต้น) จากนั้นเพียงพิมพ์: $ mongo .. เนื่องจากฉันจะเริ่มต้น mongod เป็นการส่วนตัวและฉันก็ทำตามแบบฝึกหัดการเริ่มต้นอย่างรวดเร็ว .. ฉันไม่รู้ว่ามันกำลังทำงานอยู่ ...
sakthig

@ Sakti: ใช่แล้วมันก็เริ่มแล้วสำหรับฉัน! ฉันเดาว่าฉันทำผ่านความถนัด ขอบคุณ!
sk8terboi87 ツ

29

ค้นหาจาก netstat ว่ากระบวนการใดกำลังเรียกใช้พอร์ต mongodb (27017)

คำสั่ง:

sudo netstat -tulpn | grep :27017

ผลลัพธ์จะเป็น:

tcp        0      0 0.0.0.0:27017           0.0.0.0:* 
LISTEN      6432/mongod

ในกรณีของฉัน "6432" คือ pid อาจแตกต่างกันในกรณีของคุณ จากนั้นฆ่ากระบวนการนั้นโดยใช้คำสั่งต่อไปนี้:

sudo kill <pid>

แค่นั้นแหละ!


25

ใช้:

sudo killall mongod

มันจะหยุดเซิร์ฟเวอร์

จากนั้นรีสตาร์ทmongodโดย:

sudo service mongod restart

มันควรจะทำงาน


23

คุณมีกระบวนการทำงานอยู่แล้ว คุณสามารถฆ่ามันด้วยคำสั่ง:

killall mongod

15

คุณต้องการที่จะทำเพราะมันจะยังคงทำงาน:killall -15 mongodAddress already in use for socket: 0.0.0.0:27017

จากนั้นคุณสามารถเรียกใช้mongodอีกครั้ง


ทำไมไม่ง่าย ๆkillall mongod?
Dmitri Zaitsev

1
No matching processes belonging to you were found
retrovertigo

ดังนั้น mongod จะต้องไม่ใช้กระบวนการ อาจใช้ที่อยู่อื่นในกระบวนการที่แตกต่างกัน
John Ottenlips

7

ลองใช้พอร์ตอื่นถ้าคุณไม่พบกระบวนการที่กำลังทำงานอยู่ในปัจจุบันหรือการฆ่ามันไม่ทำงาน ตัวอย่างเช่นลอง 27018 เพราะค่าเริ่มต้นคือ 27017

mongod  --port 27018

ฉันพบสิ่งนี้ด้วยคำสั่ง mongod --help



6

ลอง killall -15 mongod / killall mongod อย่างใดอย่างหนึ่งแม้หลังจากสิ่งนี้แล้วหากไม่ได้ผลให้ลบโฟลเดอร์หน่วยเก็บข้อมูล db โดยพิมพ์คำสั่งต่อไปนี้ sudo rm -rf / data / db sudo mkdir / data / db sudo chmod 777 / data / db


5

OS X. กิจกรรมการตรวจสอบมองหาMongodข้ามมัน จากนั้นก็วิ่งอีกครั้ง Mongo แก้ไขปัญหา.


OP ไม่ได้ระบุระบบปฏิบัติการ แต่ไฟล์บันทึกแสดงถึง Linux อย่างชัดเจน
Nic Nilov


3

ฉันมีปัญหาเดียวกันคือฉันพยายามเปิดตัวอย่างใหม่ของ mongod และมันก็บอกว่ามันกำลังทำงานอยู่

ฉันตรวจสอบเอกสารแล้วมันบอกว่าให้พิมพ์

mongo
use admin
db.shutdownServer()

3

MongoDB ไม่สามารถเริ่มต้นได้เนื่องจากการปิดที่ไม่สะอาด หากต้องการแก้ไขให้ลบไฟล์ mongod.lock ไฟล์นี้อยู่ในโฟลเดอร์ data

ค้นหาว่าโฟลเดอร์ข้อมูลของคุณอยู่ที่ไหนโดยดูในไฟล์ mongodb.conf หรือ mongod.conf (ไฟล์ Conf ภายใต้ / etc บนระบบ Linux)

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

ตัวอย่างเช่นการใช้การกำหนดค่าข้างต้นไฟล์จะอยู่ที่ /var/lib/mongodb/mongod.lock เพียงแค่ลบออกและเริ่มต้น mongodb ใหม่


1
สิ่งนี้เกิดขึ้นกับฉันมากกว่าหนึ่งครั้งโดยเฉพาะในเซิร์ฟเวอร์คลาวด์ที่ "ยากรีเซ็ต" เมื่อไม่ตอบสนอง เป็นการแก้ไขที่ง่ายและควรเป็นคำตอบที่ดีที่สุด
SevakPrime

2

ฉันประสบปัญหาเดียวกัน แม้ว่าmongodbบริการจะไม่ทำงาน แต่บันทึกแสดงaddress already in useข้อความ

 $netstat -tulpn | grep :27017 

ไม่มีอะไรคืน

จากการวิเคราะห์เพิ่มเติมพบว่าปัญหาเกิดจากการล็อคไฟล์ บริการกำลังทำงานได้ดีหลังจากลบไฟล์ล็อคแล้วเริ่มใหม่

$grep "dbpath" /etc/mongodb.conf

dbpath =/var/lib/mongodb

$ls /var/lib/mongodb/mongod.lock

$service mongod start

2

ตรวจสอบไฟล์บันทึกที่ /var/log/mongodb/mongod.log และลองแก้ไขข้อผิดพลาด ในกรณีของฉันมันเป็น

ไม่สามารถยกเลิกการเชื่อมโยงไฟล์ซ็อกเก็ต /tmp/mongodb-27017.sock errno: 1 ไม่อนุญาตการดำเนินการ

ลบ /tmp/mongodb-27017.sock และใช้งานได้



1

อาจเป็นไปได้ว่าเซิร์ฟเวอร์กำลังทำงานอยู่ โปรดตรวจสอบโดยคำสั่งmongoทำงานหรือไม่


1

ในการแก้ไขปัญหาในWindowsขั้นตอนด้านล่างนี้ใช้ได้กับฉัน:

ตัวอย่างเช่นติดตั้ง mongoDB เวอร์ชัน 3.6 และพา ธ การติดตั้งของ MongoDB คือ "D: \ Program Files \ MongoDB"

สร้างโฟลเดอร์ D: \ mongodb \ logs จากนั้นสร้างไฟล์ mongodb.log ภายในโฟลเดอร์นี้

เรียก cmd.exe เป็นผู้ดูแลระบบ ,

D:\Program Files\MongoDB\Server\3.6\bin>taskkill /F /IM mongod.exe
D:\Program Files\MongoDB\Server\3.6\bin>mongod.exe --logpath D:\mongodb\logs\mongodb.log --logappend --dbpath D:\mongodb\data --directoryperdb --serviceName MongoDB --remove
D:\Program Files\MongoDB\Server\3.6\bin>mongod --logpath "D:\mongodb\logs\mongodb.log" --logappend --dbpath "D:\mongodb\data" --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

ลบสองไฟล์เหล่านี้mongod.lockและstorage.bsonภายใต้โฟลเดอร์ "D: \ mongodb \ data"

จากนั้นพิมพ์net start MongoDBcmd โดยใช้สิทธิ์ผู้ดูแลระบบปัญหาจะได้รับการแก้ไข


0

มันแสดงข้อผิดพลาดในการฟัง (): bind () errno ล้มเหลว: 98 ที่อยู่ที่ใช้งานอยู่แล้วสำหรับซ็อกเก็ต: 0.0.0.0:27017 เช่น 27017 ที่มีการใช้งานอยู่แล้วโดยบริการอื่น ๆ โปรดตรวจสอบสิ่งนี้โดยคำสั่ง "netstat -apt | grep" 27017 ""


0

(หากคุณกำลังใช้งาน linux อยู่) ถ้า

mongod --shutdown --config=path/to/your/configFile.conf 

หรือ

mongod --repair --config=path/to/your/configFile.conf 

ไม่ได้แก้ไขปัญหาออกจากระบบและเข้าสู่ระบบอีกครั้ง นั่นช่วยแก้ไขปัญหาของฉัน

หรือคุณสามารถฆ่ากระบวนการด้วยตนเองจากเทอร์มินัลฉันเดา


0

ดูเหมือนว่าข้อผิดพลาดเดียวกันจะแสดงในบันทึกเมื่อคุณขาดการตั้งค่าสภาพแวดล้อม LC_ALL มันสับสน แต่คุณอาจสั่งmongoให้ลูกค้ารู้ว่ามันเป็นปัญหา


0

หากคุณใช้ mongo เป็นครั้งแรกคุณอาจต้องการกำหนดเส้นทางก่อน

mongod --dbpath <path to the directory>

0

กระบวนการฆ่าไม่ได้แก้ปัญหาของฉัน Macของฉันทำงานล้มเหลวและเมื่อรีสตาร์ทไฟล์ล็อคบางไฟล์ (mongod.lock, WiredTiger.lock) มีอยู่ใน mongo dbPath ฉันย้ายไฟล์เหล่านี้ไปยังโฟลเดอร์อื่น (ฉันไม่ได้ลบเพื่อหลีกเลี่ยงปัญหาอื่น ๆ ) จากนั้นก็ใช้งานได้ ในดาวที่ประสบความสำเร็จฉันลบไฟล์ล็อคที่ถูกย้าย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.