2012-08-28 54 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,請告訴我,如果我錯了。 –