【问题标题】:AWS MongoDB EC2 instance as localhost with EC2 application instanceAWS MongoDB EC2 实例作为具有 EC2 应用程序实例的 localhost
【发布时间】:2012-07-16 18:26:40
【问题描述】:

我实际上是 AWS 的新手。我配置了 2 个 EC2 实例。

一个用于我的 MongoDB 数据库,另一个用于我的应用程序。

我正在使用 pymongo 进行连接。但是如果每次都通过实例发送数据,会花费太多时间。我想知道是否可以将 mongoDB 实例作为应用程序的本地主机,使用组或我不知道,以获得更好的性能。

或者如果将数据库与我的应用程序放在同一个实例上并获得更多 EBS 会更好。

【问题讨论】:

    标签: mongodb amazon-ec2 amazon-web-services localhost


    【解决方案1】:

    确保您知道性能瓶颈在哪里。

    如果两个实例都在同一个可用区,网络延迟不应该是最大的性能问题。事实上,如果您的实例至少...由于更好的 NIC...网络延迟应该不是问题。

    要确定,请使用监控工具衡量您的网络利用率。

    如果您的任何工作集(以任何频率使用的 MongoDB 文档)无法放入实例的 RAM,则意味着您正在接触 EBS。与 MongoDB 所需的相比,EBS 非常非常慢。我最近使用iozone 测量了单个 EBS 卷,发现 EBS 卷的速度是笔记本电脑旋转硬盘的一半。

    您可以通过将striping multiple EBS volumes 引入软件 RAID 配置来显着提高 EBS 性能。

    在 AWS 上运行 MongoDB 的底线是,您需要足够的 RAM 来保存您会以任何频率接触的 MongoDB 文档。

    【讨论】:

    • 我会尝试对多个 EBS 进行条带化,看看有什么不同,谢谢!
    【解决方案2】:

    我有一个生产应用程序在与 Web 服务器相同的机器上使用 mongodb 实例。对我来说很好,但我现在不需要可扩展性。一个实例就足够了。

    所以要回答您的问题,请确保您可以将其作为 localhost 运行。

    但是,如果您的应用启动并且您需要多个实例或分片等,那么您也必须将实例部署在其他机器上。

    【讨论】:

    • 我不会真正提倡在localhost 上运行,除非你真的很确定实例不会开始交换。当他们的 MongoDB 工作集不再适合 RAM 时,FourSquare 出现故障,并且在实例上运行 MongoDB 以外的东西只是意味着 MongoDB 可用的内存更少。 blog.foursquare.com/2010/10/05/so-that-was-a-bummer
    • 实例可以开始交换是什么意思?这种情况(交换)不会发生在托管 MongoDB 的独立 EC2 实例上吗?
    • 当然,但是如果您还在一个机器上运行 Apache 和其他东西,那么您将更早开始交换。 MongoDB 真的非常非常需要 RAM。
    • 哦,你说的是内存交换。出于某种原因,我以为您在谈论 EC2 从您下方更改您的物理机。
    猜你喜欢
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 2016-09-22
    • 2015-04-17
    • 1970-01-01
    • 2015-10-08
    • 2023-03-18
    • 2021-11-11
    相关资源
    最近更新 更多