- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在运行一个相当标准的 MongoDB (3.0.5) 副本集,其中包含 1 个主副本和 2 个副副本。我的 PHP 应用程序的读取首选项是主要的,因此不会在辅助设备上进行读取 - 它们仅用于故障转移。我正在我的应用程序上运行负载测试,它每秒创建大约 600 个查询/更新。这些操作都是针对拥有约 500,000 个文档的集合运行的。但是,查询经过索引优化和支持。任何查询最多不会超过 40 毫秒。
我的问题是所有 3 个节点上的 CPU 负载都非常高 (200% - 300%) - 有时辅助节点上的负载甚至高于主节点上的负载。磁盘 IO 和 RAM 使用似乎没问题 - 至少它们没有达到任何限制。
主服务器的日志文件包含大量 getmore oplog 查询 - 我猜对主服务器的任何操作都会创建一个 oplog 查询。在我看来,这是太多的复制开销,但我之前没有任何在负载下使用 MongoDB 的经验,也没有任何关键数据。
由于设置将不得不在生产中承受更多的负载,我的问题是复制开销是否在预期范围内以及 CPU 负载升高到那么高是否正常,即使在辅助节点上也是如此,或者我是否有什么问题?我不见了?
最佳答案
这样想。无论数据更改操作发生在主服务器上,它也需要发生在每个辅助服务器上。如果有很多这样的操作,并且它们在主节点上产生高 CPU 负载,那么同样的情况将在辅助节点上重复出现。
当然,在您的情况下,您希望主服务器的 CPU 压力更大,因为除了写入之外,它还处理所有读取。可能,在您的场景中,读取相对较少,与写入量相比,读取次数并不多。这可以解释为什么主节点上的负载与辅助节点上的负载大致相同。
my question is whether the replication overhead is to be expected
你所谓的复制开销,我认为是复制的本质。写入压力大的主节点会导致所有次级节点也受到写入压力。
and whether it's normal that the CPU load goes up that high, even on the secondaries
您每秒有 600 个写入查询并且您的 RAM 和磁盘没有压力,对我来说这意味着您已经正确设置了索引。每秒这种写入操作量预计会有高 CPU 负载,因为索引正在被密集使用。
请记住,一旦你收集了更多的数据,索引和内存映射数据可能不再适合内存,然后 RAM 和磁盘都会有压力,而 CPU 不太可能在高加载了。在这种情况下,您可能想要添加更多 RAM 或查看 sharding .
关于MongoDB 副本集 CPU 负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34179231/
不确定我的标题措辞是否正确,但请耐心等待,所有内容都会得到解释... 我们有一组代码不是在这里发明的,它使用进程间通信(IPC 消息传递)。该方案的大致轮廓是这样的: comms.c 包含: stat
你怎么能列出所有的颠覆合并? 例如: Trunk ____9_____14____20___ \ \ \ \______\_____\___
是否有一个集合的标准 Java(1.5+)实现(即无第三方),允许我将多个集合粘合到一个集合中? 这是其工作原理的草图: final SomeCollection x = new SomeCollec
有没有办法让sql查询返回拆分行。我什至不知道怎么问。下面有'index_tag'。 select event.name, tb_ev.start_time, tb_ev.end_time from
我正在尝试使用 postgresql COPY 命令从 CSV 加载一些数据。诀窍是我想在用户标识(包含在 CSV 中)上实现 Multi-Tenancy 。加载 csv 时,是否有一种简单的方法告诉
我正在尝试使用 bash 脚本将文件复制到当前目录。 为了处理需要转义的路径,使用了一个变量,该变量被转义然后提供给 cp 命令。 cp 命令提示: usage: cp [-R [-H | -L |
我正在尝试每 20 毫秒向给定的 x 和 y 坐标添加一次 CAShapelayer。我希望形状在一秒钟内消失(就像示踪剂一样)。我创建的功能有效,形状在正确的位置创建并消失。但是我留下了额外的形状,
我是 Python 新手。我正在尝试创建一个程序来打印我通常每周手动打印的一组文档,但是我遇到了几个问题: 这是代码: import os file_list = os.listdir("C:/Pyt
我有一个大小为 10 的 ArrayList l1。我将 l1 分配给新的列表引用类型 l2。 l1 和 l2 会指向同一个 ArrayList 对象吗?或者是 ArrayList 对象的副本分配给
我这周花了一个自由职业者创建的 Mongo 4.4 PSA 副本来工作。我放弃了,从所有三台服务器上删除了完整的 mongod,然后按照 Mongo doc 从头开始安装。 .唯一的变化是在副本初
设置信息: 我有两个数据中心,每个 DC 中有 5 个节点。 我知道插入到表中的每一行都是根据使用的数据分区方案存储的;生成必要的副本并将它们存储在集群中的其他节点(根据复制策略选择节点)上。给定一行
我对 XSLT 完全陌生,所以请耐心等待。 我有两个 xml 文件,我试图使用 XSLT 将它们连接在一起。我想合并这些文件,以便第二个文件中指定的任何值覆盖第一个文件。例如 firstFile.xm
这里肯定有一个初学者问题,为什么 F# 编译器会制作不必要的 DateTimeOffset 副本,我该如何阻止它?我不记得这是个问题,但也许自从我在 F# 中使用 DateTimeOffset 以来已
我有一个用 C# 编写的 WinForms 应用程序,在将数据从 SQL 数据库导出到模板的工作表之前,它使用以下代码打开 Excel 模板。 Microsoft.Office.Interop.Exc
我从这个 post 得到的 xsl 中有这个函数 用“换行符”替换“cr” 我是这样调用它的: 我正在做文章链接,点击文本“阅读更多”
所以这可能有点难以解释...... 目前我这样做: SomeInterface xyz1 = SomeInterface.method(data); SomeInterfaceCopy xyz2 =
我有一个包含指针 p 的类型 var。我需要在另一个与 var 类型相同的变量 var1 上复制 var(通过在引号中执行 var1 "="var,因为我不知道这是否是正确的方法,请参见下文)。 在我
出于某种原因,我需要同时运行两个 xampp 副本。我在互联网上阅读了很多教程,但如果我需要运行另一个,他们最终会告诉我关闭当前的 xampp。这有可能实现吗? 最佳答案 您可以使用不同的端口同时运行
在aws中,“upload-part-copy”具有字节范围选项。如果我想将两个对象的一部分复制到云中的新对象,我可以使用“upload-part-copy”命令进行复制。 我找不到任何此类方法或机制
我有一个带栏的表 foo foo --- bar 我使用 Postgres 的 Copy 命令 COPY (select * from foo) TO 'complete_file_path' WIT
我是一名优秀的程序员,十分优秀!