【发布时间】:2016-03-14 18:01:26
【问题描述】:
我正在运行一个相当标准的 MongoDB (3.0.5) 副本集,其中包含 1 个主副本和 2 个辅助副本。我的 PHP 应用程序的读取首选项是主要的,因此不会在辅助节点上进行读取 - 它们仅用于故障转移。我正在我的应用程序上运行负载测试,每秒创建大约 600 个查询/更新。这些操作都是针对具有约 500,000 个文档的集合运行的。但是,查询已被优化并由索引支持。任何查询最长不会超过 40 毫秒。
我的问题是我在所有 3 个节点上的 CPU 负载都很高(200% - 300%) - 有时辅助节点上的负载甚至高于主节点上的负载。磁盘 IO 和 RAM 的使用似乎还可以——至少它们没有达到任何限制。
主节点的日志文件包含大量的 getmore oplog 查询——我猜对主节点的任何操作都会创建一个 oplog 查询。在我看来,这是太多的复制开销,但我之前没有任何使用 MongoDB 负载的经验,也没有任何关键数据。
由于设置必须在生产中承受更多负载,我的问题是复制开销是否可以预期以及 CPU 负载升高那么高是否正常,即使在辅助节点上也是如此,或者我有什么问题吗?我失踪了?
【问题讨论】:
标签: mongodb