【发布时间】:2020-11-20 05:25:31
【问题描述】:
我不知道为什么,但统计数据显示非常有趣。
首先,我在ec2上安装了MongoDB,c5.4xlarge。
我在数据库上做了一些测试。
有趣的是,当我同时写 10 个文档时,MongoDB 每个内核使用了几乎 100% 的 CPU,但根本没有增加内存!!
如果我没记错的话,mongodb 会首先写入内存,所以我期望的是增加内存使用量。
为了减少每个核心的CPU使用率,我做了如下:
- 禁用时间
- 使 MongoDB 数据文件夹在 xfs 文件系统上运行。
- 在 EBS 上存储 MongoDB 数据,并通过配置提高 IOPS
- 升级glibc新的最新版本
我使用的MongoDB版本是4.4,使用的引擎是WiredTiger。
如果您有在 AWS 上运行 MongoDB 以连续写入大量数据的经验,请帮助我。
下面是我的 mongodb.conf
# Where and how to store data.
storage:
dbPath: "/home/ubuntu/mongodb/data"
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 24
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: "/home/ubuntu/mongodb/log/mongod.log"
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
replication:
replSetName: "rs-exchange"
【问题讨论】:
-
非常有趣,但现在它太宽泛了,更适合dba.stackexchange 或MongoDB developers forum
-
另外,众所周知,WiredTiger 在 XFS 中工作得更好,你应该用一个链接来支持你关于内存的声明。检查有线老虎文档。
-
@Minsky 感谢您的评论 :) 是的,正如我所写,我已经在 XFS 上使用过 WiredTiger 引擎
-
另外你应该分享副本集配置,看看那里有什么问题
-
@Minsky谢谢你的评论。最后我发现这是我的问题。我写错了一些代码,即我使用了 update_one 而不是 insert_one。对于update_one的情况,我应该使用索引,但我没有......应用索引后,CPU使用率急剧下降。