2012-07-17 147 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