我实际上是 AWS 的新手。我配置了 2 个 EC2 实例。
一个用于我的 MongoDB 数据库,另一个用于我的应用程序。
我正在使用 pymongo 进行连接。但是如果每次都通过实例发送数据,会花费太多时间。我想知道是否可以将 mongoDB 实例作为应用程序的本地主机,使用组或我不知道,以获得更好的性能。
或者如果将数据库与我的应用程序放在同一个实例上并获得更多 EBS 会更好。
我实际上是 AWS 的新手。我配置了 2 个 EC2 实例。
一个用于我的 MongoDB 数据库,另一个用于我的应用程序。
我正在使用 pymongo 进行连接。但是如果每次都通过实例发送数据,会花费太多时间。我想知道是否可以将 mongoDB 实例作为应用程序的本地主机,使用组或我不知道,以获得更好的性能。
或者如果将数据库与我的应用程序放在同一个实例上并获得更多 EBS 会更好。
确保你知道你的性能瓶颈在哪里。
如果两个实例都在同一个可用区,网络延迟不应该是最大的性能问题。实际上,如果您的实例至少很大……由于更好的 NIC……网络延迟应该不是问题。
要确定,请使用监控工具测量您的网络利用率。
如果您的任何工作集(以任何频率使用的 MongoDB 文档)无法放入实例的 RAM,则意味着您正在接触 EBS。与 MongoDB 所需的相比,EBS非常非常慢。我最近使用iozone测量了单个 EBS 卷,发现 EBS 卷的速度是笔记本电脑旋转硬盘驱动器的一半。
您可以通过将多个 EBS 卷条带化到软件 RAID 配置中 来显着提高 EBS 性能。
在 AWS 上运行 MongoDB 时的底线是您需要足够的 RAM 来保存您会以任何频率接触的 MongoDB 文档。
我有一个生产应用程序,它在与 Web 服务器相同的机器上使用 mongodb 实例。对我来说很好,但我现在不需要可扩展性。一个实例就足够了。
因此,要回答您的问题,请确保您可以将其作为 localhost 运行。
但是,如果您的应用程序启动并且您需要多个实例或分片等,那么您也必须将实例部署在其他机器上。