2012-07-17 95 views
3

我實際上是AWS新手。我配置了2個EC2實例。AWS MongoDB EC2實例作爲本地主機與EC2應用程序實例

一個用於我的MongoDB數據庫,另一個用於我的應用程序。

我正在使用pymongo進行連接。但是,如果每次都通過實例發送數據,則需要太多時間。我想知道是否有可能將mongoDB實例作爲localhost用於應用程序,使用組或我不知道,以獲得更好的性能。

或者如果最好將數據庫放在與我的應用程序相同的實例上並獲得更多的EBS。

回答

3

確保你知道你的性能瓶頸在哪裏。

如果兩個實例在同一個可用區中,則網絡延遲不應該是最大的性能問題。事實上,如果您的實例至少爲 ...由於更好的NIC ...網絡延遲應該是一個沒有問題。

要知道肯定,請使用監視工具來測量您的網絡利用率。

如果您的任何工作集(任何頻率使用的MongoDB文檔)無法放入實例的RAM中,這意味着您正在觸摸EBS。與MongoDB的需求相比,EBS是非常非常慢,。我最近使用iozone測量了單個EBS卷,發現EBS卷的速度是筆記本電腦旋轉硬盤的一半。

您可以將EBS性能實質上提高striping multiple EBS volumes爲軟件RAID配置。

在AWS上運行MongoDB的底線是您需要足夠的RAM來存放您將以任何頻率接觸的MongoDB文檔。

+0

我會嘗試條紋多個EBS並查看其差異,謝謝! – kschaeffler 2012-07-18 12:30:41

0

我在生產中使用與web服務器相同的機器上的mongodb實例的應用程序。對我來說工作得很好,但是現在我不需要可擴展性。一個例子就足夠了。

所以要回答你的問題,確定你可以運行它作爲本地主機。

但是,如果您的應用程序啓動並且您需要多個實例或分片等,那麼您還必須在其他計算機上部署實例。

+0

我不會主張在'localhost'上運行,除非你真的確信實例不會開始交換。當他們的MongoDB工作集停止在RAM中安裝時,FourSquare停止運行,並且在一個實例上運行MongoDB以外的東西僅僅意味着MongoDB可用的內存較少。 http://blog.foursquare.com/2010/10/05/so-that-was-a-bummer/ – 2012-07-17 19:27:28

+0

你是什麼意思實例可以開始交換?這(交換)是否也發生在一個獨立的EC2實例上,其中一個託管MongoDB? – Sid 2012-07-17 19:51:30

+0

當然,但是如果你也在一個盒子上運行Apache和其他東西,你將會更早地開始交換。 MongoDB真的,真的很餓。 – 2012-07-17 21:40:32