Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Mongodb连接需要3分钟_Macos_Node.js_Mongodb_Mongoose - Fatal编程技术网

Macos Mongodb连接需要3分钟

Macos Mongodb连接需要3分钟,macos,node.js,mongodb,mongoose,Macos,Node.js,Mongodb,Mongoose,刚刚在我的mac上重新安装了Mongodb(山狮10.8的新安装),现在我的应用程序需要3分钟才能连接 我编写了一个简单的节点脚本来测试这一点: var start = (new Date()).getTime(); var mongoose = require('mongoose'); var db = mongoose.connect('mongodb://localhost/passport-mongox',function(err){ var stop = (new Date(

刚刚在我的mac上重新安装了Mongodb(山狮10.8的新安装),现在我的应用程序需要3分钟才能连接

我编写了一个简单的节点脚本来测试这一点:

var start = (new Date()).getTime();

var mongoose = require('mongoose');

 var db = mongoose.connect('mongodb://localhost/passport-mongox',function(err){
  var stop = (new Date()).getTime();

  console.log('Took this long: ',(stop-start) / 1000 );
 });
这两个时间分别为175.273秒和175.316秒

当我连接到外部托管mongodb时,它会在不到一秒钟的时间内连接

你知道为什么会这样吗?这是我的mongo.log:

Fri Feb  1 12:43:25 [initandlisten] MongoDB starting : pid=2262 port=27017 dbpath=/usr/local/var/mongodb 64-bit host=w
Fri Feb  1 12:43:25 [initandlisten] db version v2.2.2, pdfile version 4.5
Fri Feb  1 12:43:25 [initandlisten] git version: d1b43b61a5308c4ad0679d34b262c5af9d664267
Fri Feb  1 12:43:25 [initandlisten] build info: Darwin bs-osx-106-x86-64-1.local 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun  7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
Fri Feb  1 12:43:25 [initandlisten] options: { bind_ip: "127.0.0.1", config: "/usr/local/etc/mongod.conf", dbpath: "/usr/local/var/mongodb", logappend: "true", logpath: "/usr/local/var/log/mongodb/mongo.log" }
Fri Feb  1 12:43:25 [initandlisten] journal dir=/usr/local/var/mongodb/journal
Fri Feb  1 12:43:25 [initandlisten] recover : no journal files present, no recovery needed
Fri Feb  1 12:43:26 [websvr] admin web console waiting for connections on port 28017
Fri Feb  1 12:43:26 [initandlisten] waiting for connections on port 27017
Fri Feb  1 12:44:05 [initandlisten] connection accepted from 127.0.0.1:52137 #1 (1 connection now open)
Fri Feb  1 12:44:40 [initandlisten] connection accepted from 127.0.0.1:52152 #2 (2 connections now open)
Fri Feb  1 12:45:15 [initandlisten] connection accepted from 127.0.0.1:52201 #3 (3 connections now open)
Fri Feb  1 12:45:50 [initandlisten] connection accepted from 127.0.0.1:52298 #4 (4 connections now open)
Fri Feb  1 12:46:25 [initandlisten] connection accepted from 127.0.0.1:52325 #5 (5 connections now open)
Fri Feb  1 12:51:26 [conn5] end connection 127.0.0.1:52325 (4 connections now open)
Fri Feb  1 12:51:26 [conn3] end connection 127.0.0.1:52201 (4 connections now open)
Fri Feb  1 12:51:26 [conn4] end connection 127.0.0.1:52298 (4 connections now open)
Fri Feb  1 12:51:26 [conn1] end connection 127.0.0.1:52137 (4 connections now open)
Fri Feb  1 12:51:26 [conn2] end connection 127.0.0.1:52152 (4 connections now open)
所以答案来自推特

我的主机文件始终是这样的:

127.0.0.1 localhost
127.0.0.1 test.com
127.0.0.1 wes.dev
我换成:

127.0.0.1 localhost test.com wes.dev
连接时间回到0.015秒。

原因: 底层MongoDB驱动程序默认查找IPv6地址, 因此,最可能的原因是您的本地主机DNS映射未配置为处理IPv6

解决方案: 使用127.0.0.1而不是localhost,或者使用族选项,如中所示

mongoose.connect(url,{family:4},函数(err,connection){
connection.db(你的名字);

});

是否可以将开始移到“require”语句之后?(因此,我们100%确信连接所花费的时间是如此之长)。顺便说一下,你的机器的内存使用情况如何?移动它会使它的速度提高半秒,所以没有真正的区别。我有1.5gig的可用内存ATM,所以不是这样。尝试将连接池大小减小到1,看看会发生什么。尝试将其减小到1,现在需要35秒-有些改进,但仍然太慢。当您连接命令行实用程序(即运行mongo)时,是否也需要那么长的时间?它确实解决了很长的连接!奥斯卡皮坦。我试过mongodb驱动程序1.4、2.0和2.1、节点4.1和5.4以及mongodb 3.0.6。只有编辑/etc/hosts才能解决此问题。非常奇怪的行为。