gpt4 book ai didi

mongodb - 当使用大量 CPU 周期时如何优化 mongos?

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

我有一个非常标准的 mongo 设置,在应用程序服务器上运行 mongos,运行三个 mongoc 实例,三个 mongod 实例的两个分片每个。

一切运行良好,但我看到的所有文档都说 mongos 应该是一个相当轻量级的进程。我的情况似乎并非如此。我正在运行一个模拟多个用户发出请求的测试,限制因素似乎是 mongos 进程。 nginx 和 php-fpm 也在应用服务器上运行,但在测试期间它们只使用了大约 15% 的 CPU。 mongos 在 85% 左右。

我可以添加更多的应用程序服务器来补偿,但由于 mongos 应该更轻量级,我想也许我做错了什么。据我所知,我的所有查询都已编入索引。我在每个集合中使用默认的 MongoID 作为分片索引。

最佳答案

如果 mongos 必须执行大量内存中排序或大量合并排序、map-reduce、计数等,那么它就不是轻量级的。如果它所要做的只是确定您要向哪些分片发送查询,那么它就是轻量级的。

当它必须对来自这些分片的数据进行大量聚合、合并它们、对它们进行排序,然后将它们交还给最终用户时,它的工作难度就会大得多。

如果您想查看 mongos 发生了什么,请登录并运行 db.currentOp()查看当时运行的是什么 - 由于它是一个时间点,您可能需要几个样本才能让罪魁祸首显而易见。同样,mongostat可以让您了解随时间推移运行的操作,这可能会有所帮助。

最后 - 作为找出问题用户的可能策略,您可以让每个人暂时连接到一个单独的 mongos 并查看他们的表现 - 这可能需要一些重构这样做,但这可能是一个有用的选择。

关于mongodb - 当使用大量 CPU 周期时如何优化 mongos?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740777/

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