更改为原子更新后mongodb写入带宽没有下降
我最近改变了在一个大型mongo集合中更新数据的方式。此集合中的平均文档大小为71K MongoDB信息:更改为原子更新后mongodb写入带宽没有下降,mongodb,amazon-web-services,Mongodb,Amazon Web Services,我最近改变了在一个大型mongo集合中更新数据的方式。此集合中的平均文档大小为71K MongoDB信息: [ec2-user@ip-10-0-1-179 mongodata]$ mongod --version db version v3.0.7 git version: 6ce7cbe8c6b899552dadd907604559806aa2e9bd 存储引擎:WiredTiger 之前我们检索整个文档,向3个数组添加一个元素,然后将整个文档写回Mongo 我最近所做的更改是创建原子添加操
[ec2-user@ip-10-0-1-179 mongodata]$ mongod --version
db version v3.0.7
git version: 6ce7cbe8c6b899552dadd907604559806aa2e9bd
存储引擎:WiredTiger
之前我们检索整个文档,向3个数组添加一个元素,然后将整个文档写回Mongo
我最近所做的更改是创建原子添加操作,因此我们没有将整个文档写回Mongo,而是称之为3个添加操作
这对mongo服务器的网络带宽产生了相当大的影响(平均从634 MB/s到72 MB/s):
但磁盘容量指标说明了一个完全不同的情况
数据量指标(即/var/mongodata/)绝对没有变化:
日志卷度量似乎显示写入带宽和IOPS显著增加(即/var/mongodata/journal):
由于我现在正在执行多个较小的操作,而不是一个较大的操作,因此我可以“大致”证明日志写入IOPS的增加是合理的
以下是mongostat的最新快照(这并不意味着大量的插入或更新)
我的问题是,既然网络带宽(代表写入操作的大小)下降了近10倍,为什么数据量指标没有反映出这种变化。您使用的是哪个mongodb存储引擎?Mongo v3.0.7,WiredTigerIIRC wired tiger始终进行完整复制-在您使用的mongodb存储引擎当前找不到引用?Mongo v3.0.7,WiredTigerIIRC wired tiger始终进行完整复制-目前找不到引用
insert query update delete getmore command % dirty % used flushes vsize res qr|qw ar|aw netIn netOut conn set repl time
1 910 412 *0 0 77|0 7.7 80.2 0 29.2G 21.9G 0|0 4|2 1m 55m 738 rs0 PRI 16:21:45
1 758 19 *0 0 51|0 7.3 80.0 0 29.2G 21.9G 0|1 2|22 82k 29m 738 rs0 PRI 16:21:47
*0 1075 164 *0 0 83|0 7.4 80.1 0 29.2G 21.9G 0|0 4|2 1m 36m 738 rs0 PRI 16:21:48
*0 1046 378 *0 0 77|0 7.3 80.1 0 29.2G 21.9G 0|0 4|2 629k 55m 738 rs0 PRI 16:21:49
*0 1216 167 *0 0 58|0 7.6 80.2 0 29.2G 21.9G 0|1 1|11 238k 43m 738 rs0 PRI 16:21:50
*0 1002 9 *0 0 59|0 1.1 79.7 1 29.2G 21.9G 0|1 1|22 105k 35m 738 rs0 PRI 16:21:51
*0 801 37 *0 0 275|0 0.7 79.9 0 29.2G 21.9G 0|2 13|1 949k 17m 738 rs0 PRI 16:21:52
1 2184 223 *0 0 257|0 0.9 80.1 0 29.2G 21.9G 0|0 3|2 825k 52m 738 rs0 PRI 16:21:53
*0 1341 128 *0 0 124|0 0.9 80.0 0 29.2G 21.9G 0|1 2|39 706k 55m 738 rs0 PRI 16:21:54
1 1410 379 *0 0 121|0 1.2 80.0 0 29.2G 21.9G 0|0 2|2 2m 66m 738 rs0 PRI 16:21:55