MongoDB 2.0.1を備えたCentOS 5.x Linux(メインおよびレガシースタティックの試用)
MongoDBが実行されています:
root 31664 1.5 1.4 81848 11148 ? Sl 18:40 0:00 ./mongod -f mongo.conf -vvvvv --fork
単純なシェル接続を使用してサーバーに接続できません:
[root@xxxx bin]# ./mongo
MongoDB Shell version: 2.0.1
connecting to: test
Mon Oct 31 18:41:32 Error: couldn't connect to server 127.0.0.1 Shell/mongo.js:84
exception: connect failed
ポート28017のWebインターフェイスは、リモートLinuxホストからMongoDBシェルを使用する場合と同様に正常にロードされます。 localhost:27017にtelnetすることもできます。これは、ポートがブロックされていないことを意味します。このマシンで実行されているSELinuxもありません。また、localhost:2017/db
を明示的に指定して、使用できないようにしました。
$ ./mongo remote-ip:27017
MongoDB Shell version: 2.0.1
connecting to: remote-ip:27017/test
> show dbs
local 0.03125GB
>
ログは完全に件名についてです:
.....
Mon Oct 31 18:40:34 [initandlisten] fd limit hard:1024 soft:1024 max conn: 819
Mon Oct 31 18:40:34 [initandlisten] waiting for connections on port 27017
Mon Oct 31 18:40:34 BackgroundJob starting: snapshot
Mon Oct 31 18:40:34 BackgroundJob starting: ClientCursorMonitor
Mon Oct 31 18:40:34 BackgroundJob starting: PeriodicTask::Runner
Mon Oct 31 18:40:34 [websvr] fd limit hard:1024 soft:1024 max conn: 819
Mon Oct 31 18:40:34 [websvr] admin web console waiting for connections on port 28017
Mongo Shellクライアントを追跡すると、問題のある呼び出しが1つだけ表示されます。
[pid 31708] connect(4, {sa_family=AF_INET, sin_port=htons(27017), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EBADF (Bad file descriptor)
ファイルシステムはクリーンで、ulimitの制限はありません(テストのルートとして実行)。 straceから、mongo
クライアントがTCP(AF_INET
)経由で接続しようとしていることがわかりますが、ローカルであり、MongoDBがファイルソケットを作成するため、代わりにそれを介して接続するようにクライアントに指示する方法はありますか?または、クライアントがEBADFをスローするのはなぜですか?
編集:私の基本的なMongo conf:
dbpath=/root/mongodb-linux-i686-2.0.1/data
logpath=/root/mongodb-linux-i686-2.0.1/logs/mongo.log
slowms=15
rest=1
このバージョンのmongoDbクライアントには欠けているデフォルト設定があると思います。実行してみてください:
mongo 127.0.0.1:27017
それは奇妙ですが、その後、私は問題がなくなったことを経験しました:)
[Ubuntu Linux 11.10 x64 / MongoDB 2.0.1]
Configをチェックして、bind_ipが設定されているかどうかを確認することができます。
bind_ip:127.0.0.1
その場合、これはローカルログインのみを許可します。これをコメントアウトして、mongoを再起動してください。これが役立つ場合があります。
同様の問題がありましたが、実際は同じです(mongoプロセスは実行されていますが、接続できません)。私がしたことは、データベースパスに移動し、mongod.lockを削除してから、もう一度試してみました(mongoを再起動しました)。その後、動作しました。
それがあなたにも役立つことを願っています。 buntuでのmongodbの修復
同じ問題がありました。私の場合、MongoDBサーバーは実行されていませんでした。
Webブラウザでこれを開いてみてください。
http://localhost:28017
できない場合、これはMongoDBサーバーを起動する必要があることを意味します。
別の端末タブでmongod
を実行します。次に、メインタブでmongo
を実行します。これは、MongoDBサーバーに接続するシェルです。
削除/var/lib/mongodb/mongod.lock
、次にSudo service mongodb start
、次にmongo
。
ファイル/etc/mongod.confを開き、接続先のマシンのIPをbind_ipに追加します
bind_ip = 127.0.0.1、リモートマシンのIPアドレスはこちら
例:-
bind_ip = 127.0.0.1,192.168.1.5
Mongodbサービスを再起動します。
Sudo service mongod restart
ファイアウォールでmongodbポートが開かれていることを確認してください。
セキュリティに不安がない場合は、行にコメントを付けることもできます。
私もこの問題を抱えていました。 MongoDBのジャーナリングはありますか?ログファイルに次の「事前割り当て」エントリがあることに気付きました。 「ポートでの接続を待っている」最後の行を見たら、接続できました。この「高速」モードでは、初期化に12分かかりました。
ウィリアム
Tue Apr 17 16:48:01 [initandlisten] MongoDB starting : pid=2248 port=27017 dbpath=E:\MongoData 64-bit Host=ME
Tue Apr 17 16:48:01 [initandlisten] db version v2.0.0-rc0, pdfile version 4.5
Tue Apr 17 16:48:01 [initandlisten] git version: 8d4bf50111352cee5a4f1abf25b63442d6c45dc4
Tue Apr 17 16:48:01 [initandlisten] build info: windows (6, 1, 7601, 2, 'Service Pack 1') BOOST_LIB_VERSION=1_42
Tue Apr 17 16:48:01 [initandlisten] options: { bind_ip: "ip", dbpath: "E:\MongoData", directoryperdb: true, journal: true, logpath: "E:\MongoData\mongo.log", quiet: true, rest: true, service: true }
Tue Apr 17 16:48:01 [initandlisten] journal dir=E:/MongoData/journal
Tue Apr 17 16:48:01 [initandlisten] recover : no journal files present, no recovery needed
Tue Apr 17 16:48:02 [initandlisten] preallocateIsFaster=true 9.68
Tue Apr 17 16:48:04 [initandlisten] preallocateIsFaster=true 8.44
Tue Apr 17 16:48:06 [initandlisten] preallocateIsFaster=true 9.68
Tue Apr 17 16:48:06 [initandlisten] preallocateIsFaster check took 4.921 secs
Tue Apr 17 16:48:06 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.0
Tue Apr 17 16:52:37 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.1
Tue Apr 17 16:56:54 [initandlisten] preallocating a journal file E:/MongoData/journal/prealloc.2
Tue Apr 17 17:01:42 [initandlisten] waiting for connections on port 27017
Tue Apr 17 17:01:42 [websvr] admin web console waiting for connections on port 28017
デフォルトでは、mongodbはlocalhostのみをリッスンするように設定されています。 mongodbデフォルト設定ファイルからの抜粋:
# Listen to local interface only. Comment out to listen on all interfaces.
bind_ip=127.0.0.1
外部エンティティーからリッスンするには、bind_ipにコメントする必要があります。
非ローカルインターフェイスでリッスンを開始しない限り、シャードを追加することはできません。
HTH、
アブヘイ・ダンデカール
Bind_ipが127.0.0.1以外に設定されている場合、ローカルマシンからでも明示的にIPを追加する必要があります。そのため、ローカルボックスのリモートボックスで使用しているのと同じ方法を使用するだけです。少なくともそれは私にとってそれでした。
これは実際にはエラーではありません...ここで起こることは、Mongoがローカルデータベースサーバーを実行するためにdaemonに依存していることです。シェルでmongoサーバーを「起動」するには、mongoサービスを開始する必要があります最初。
Fedora Linux(私が使用しているディストリビューションです)これらのコマンドを実行する必要があります:
1 Sudo service mongod start
2 mongo
そして、あなたはそれを持っています!サーバーが実行されます。さて、システムの起動時にMongoサービスを開始したい場合は、実行する必要があります:
Sudo chkconfig --levels 235 mongod on
そして、それだけです!これを行うと、シェルでサーバーを起動するためにmongoを入力するだけで、それはほとんどそれ、問題は、最初にSERVICEを起動し、次にSERVERを起動する必要があることです:)
追伸私が投稿したコマンドは、Fedoraだけでなく、他のLinuxディストリビューションでも動作する可能性があります...場合によっては、いくつかの単語を微調整する必要があります使用しているディストリビューション;)
上記のギャレットが説明したエラーと同じ問題に直面しています。 1. psコマンドを使用して表示されるように、ジャーナリングが有効になっているMongoDBサーバーが実行されています。2. MongoクライアントまたはMongooseドライバーがデータベースに接続できません。
解決策: 1. Mongo.lockファイルを削除すると、CentOSサーバーで通常の状態に戻るようです。 2.実稼働環境でMongoDBを実行するのはかなり新しく、週に2、3回同じ問題が発生しています。 3.ロックファイルを定期的にクリーンアップし、インシデントが発生したことを管理者に知らせるために、cronスケジュールを設定しました。
この問題のバグ修正またはそれを解決するためのその他の恒久的な方法を探しています。
MongoDBサーバー(リモートサーバー)のバージョンが4.0.3よりも大きい場合、この問題に直面します。したがって、現在のmongo-clientシェルを以下のmongoに置き換える必要があります。
Sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb [ Arch=AMD64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | Sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
Sudo apt-get update
Sudo apt-get install -y mongodb-org
その後、mongoクライアントはremove mongodbを接続できるようになります
Ubuntuの場合:
1月27日水曜日10:21:32エラー:サーバー127.0.0.1に接続できませんでしたShell/mongo.js:84例外:接続に失敗しました
解決
次のコマンドでmongodbが実行されているかどうかを確認します。
ps -ef | grep mongo
Mongoが実行されていない場合、次のようになります:
vimal 1806 1698 0 10:11 pts/0 00:00:00 grep --color=auto mongo
Mongoデーモンが存在しないことがわかります。
次に、構成ファイル(root prievを使用)から起動します。
root@vimal:/data# mongod --config /etc/mongodb.conf &
[1] 2131
root@vimal:/data# all output going to: /var/log/mongodb/mongodb.log
他の詳細を見ることができます:
root@vimal:~# more /etc/mongodb.conf
新しいターミナルを開いてmongod --config /etc/mongodb.confの結果を確認し、mongoと入力します。実行中またはgrepである必要があります
root@vimal:/data# ps -ef | grep mongo
root 3153 1 2 11:39 ? 00:00:23 mongod --config /etc/mongodb.conf
root 3772 3489 0 11:55 pts/1 00:00:00 grep --color=auto mongo
いま
root@vimal:/data# mongo
MongoDB Shell version: 2.0.4
connecting to: test
mongoDBシェルを取得します
これで話は終わりではありません。毎回自動的に起動し、ほとんどの開発マシンが毎日シャットダウンし、VMが次回の起動時にmongoを自動的に起動する必要があるように、修復方法を投稿します。
まだ回答が受け入れられていないので、2セントを追加します。
私は今まさにまったく同じ問題を抱えていました。しばらくして、iptablesルールでlocalhostがロックアウトされたことに気付きました。ファイアウォールを確認してください。
そんなに答えではなく、もっと参考になりました。これを見つけて、検索の結果としてこの質問を見つけました。私の経験の詳細は次のとおりです。
シェルエラー
markdsievers@ip-xx-xx-xx-xx:~$ mongo
MongoDB Shell version: 2.0.1
connecting to: test
Wed Dec 21 03:36:13 Socket recv() errno:104 Connection reset by peer 127.0.0.1:27017
Wed Dec 21 03:36:13 SocketException: remote: 127.0.0.1:27017 error: 9001 socket exception [1] server [127.0.0.1:27017]
Wed Dec 21 03:36:13 DBClientCursor::init call() failed
Wed Dec 21 03:36:13 Error: Error during mongo startup. :: caused by :: DBClientBase::findN: transport error: 127.0.0.1 query: { whatsmyuri: 1 } Shell/mongo.js:84
exception: connect failed
Mongoログが明らかに
Wed Dec 21 03:35:04 [initandlisten] connection accepted from 127.0.0.1:50273 #6612
Wed Dec 21 03:35:04 [initandlisten] connection refused because too many open connections: 819
これはおそらく、他の回答(JaKi)が同じことを経験しており、一部の接続がパージされ、シェル(他のクライアント)のアクセスが再び可能になったことを示している可能性があります
this は非常に便利だと思いました。
次のメッセージが表示される場合
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.84" (uid=1000 pid=3215 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
shriprasad@shriprasad-HP-430-Notebook-PC:/var/lib/mongodb$ mongo
Root以外のユーザーとしてmongodbサービスを開始しようとしている必要があります。 rootユーザーである必要があります。したがって、ルートとしてログインし、次のコマンドを実行します。
Sudo bash
に続く
service mongodb start
モンゴッドを始めた後
$mongod --dbpath <db name>
シェルを取得する
$mongo --Shell