gpt4 book ai didi

java - 由于在 EC2 实例上使用了所有内存,MongoDB 性能变慢

转载 作者:可可西里 更新时间:2023-11-01 10:06:57 25 4
gpt4 key购买 nike

我们在 EC2 上创建了 mongodb 分片,每个服务器有 3 个 m2-xlarg 服务器和 1 个 m2xlarge 实例作为 configdb 和 mongos。

我们做了一个插入1.1亿文档的测试。每个文档大小为 0.3 KB。它给出了每秒 55,000 次写入的预期结果。

但是,我们观察到一旦内存使用量接近 15GB(实例的 RAM 量),Mongo 的插入性能就会下降到每秒 1000 次插入,然后慢慢停止接受任何新的插入请求。

假设缓存使用了所有 RAM,那么性能问题是可以理解的。

尽管我们重启了所有服务器,重启后,我们仍然观察到 mongo 在前几百次插入后的执行速度并没有很慢。

任何人都可以让我们知道这里可能是什么问题吗?

我们假设当 Mongo 缓存大小接近实例的 RAM 限制(并因此使用所有 RAM)时,性能会受到影响。然而,令我们惊讶的是,一旦服务器重新启动并释放内存,性能并没有恢复。

最佳答案

根据我的经验,相对于其他解决方案,EC2 IO 性能非常差。当一切都在 RAM 中时,MongoDB 运行得非常快,但当包括索引在内的集合不再适合 RAM 时,MongoDB 依靠非常快的 IO 继续良好运行。

我建议测量您的 EC2 实例的 IO 性能。

如果您还没有这样做,您可以通过将大量 EBS 卷分割成 RAID 配置来显着改善 EC2 的 IO。尽管如此,我预计它会比例如慢。专用 SAN。

如果您无法从 EC2 获得足够的 IO,您的选择可能是使用更多实例将内容保存在 RAM 中,或者离开 EC2。

关于java - 由于在 EC2 实例上使用了所有内存,MongoDB 性能变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8686501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com