2012-08-28 21 views
1

我有这个疑问MongoDB的Ubuntu的亚马逊网络服务

db.tablebusiness.find({ “LongitudeLatitude”:{ “内$”:{ “$ centerSphere”:[106.772835,-6.186753],0.0089967464101566 ]}},“indexContents”:{“$ all”:[“warung”]},“Prominent”:{“$ gte”:15}})。limit(50);

问题:在mongodb窗口中,这个查询运行得很快不到1秒,但在ubuntu服务器中amazon这个查询没有运行。花了1分钟。

当然,还有像亚马逊服务器(我的本地主机有8GB内存)内存较低的问题。但是,性能差异很大。

在我的本地服务器上,例如,我可以运行1000000个线程。亚马逊thingy只运行1或2个查询。

两者都被索引。事实上,亚马逊服务器是我的本地主机的确切副本。我只是将文件从localhost上传到亚马逊。

它们都被索引。事实上,最近我给亚马逊增加了额外的索引。

localhost的指标为:

{LongitudeLatitude :"2d",indexContents :1,Prominent:-1} 

亚马逊的指标为:

{LongitudeLatitude :"2d",indexContents :1,Prominent:-1} 

我们还添加

{LongitudeLatitude :"2d",Prominent:-1} latter to no effect 

有谁知道什么是错在我的Ubuntu的服务器亚马逊?

dbserever在本地主机是

db.runCommand("buildInfo") 
{ 
     "version" : "2.0.7", 
     "gitVersion" : "875033920e8869d 
     "sysInfo" : "windows sys.getwin 
platform=2, service_pack='Service Pack 
     "versionArray" : [ 
       2, 
       0, 
       7, 
       0 
     ], 
     "bits" : 64, 
     "debug" : false, 
     "maxBsonObjectSize" : 16777216, 
     "ok" : 1 

dbserever在Ubuntu的亚马逊

db.runCommand("buildInfo"); 
{ 
     "version" : "2.0.7", 
     "gitVersion" : "875033920e8869d284f32119413543fa475227bf", 
     "sysInfo" : "Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41", 
     "versionArray" : [ 
       2, 
       0, 
       7, 
       0 
     ], 
     "bits" : 64, 
     "debug" : false, 
     "maxBsonObjectSize" : 16777216, 
     "ok" : 1 
} 

回答

2

最有可能这里的答案是RAM - 如果你想这样的查询亚马逊跑得快,那么数据设置他们正在工作(也称为工作集),即索引+数据,必须适合内存。任何时候您必须在Amazon实例上点击磁盘(页面错误),您都将使用EBS,这意味着您将要使用网络。与本地磁盘相比,这不会很快,并且它肯定会比访问RAM中的数据慢几个数量级。

如果Amazon实例有足够的内存但速度仍然很慢,那么数据集可能尚未存储在内存中(因为您可能已将其插入该计算机并多次运行这些查询) 。你有没有比较第一次和第二次?

此外,根据您的实例,可能没有足够的CPU资源。微型和小型实例没有很大的马力,而且你的查询有点复杂 - 我会看看亚马逊的CPU利用率,以确保实例大小适当。

最后,我会说很多人都成功地在亚马逊上运行了MongoDB,但您必须意识到限制和建议才能充分利用EC2环境。有一位优秀的演讲在这里大约在亚马逊上运行:

http://www.10gen.com/presentations/MongoNYC-2012/MongoDB-on-Amazon%20EC2

而且还有亚马逊/ EC2备注页:

http://www.mongodb.org/display/DOCS/Amazon+EC2

+0

检查答案http://stackoverflow.com/questions/12524175/why-all-in-mongodb-is-much-much,请告诉我,如果我错了。 –