加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 我怎么知道MongoDB是否需要更多CPU / RAM?

发布时间:2020-12-13 19:47:23 所属栏目:Linux 来源:网络整理
导读:我有一台运行在便宜的 Linux VPS(1 x 2.0GHz CPU和1GB RAM)上的MongoDB服务器. 现在已经有一天了,db.stats()的输出看起来很合理. db.stats(){ "db" : "app","collections" : 11,"objects" : 2067,"avgObjSize" : 238.20416061925496,"dataSize" : 492368,"st
我有一台运行在便宜的 Linux VPS(1 x 2.0GHz CPU和1GB RAM)上的MongoDB服务器.

现在已经有一天了,db.stats()的输出看起来很合理.

db.stats()
{
        "db" : "app","collections" : 11,"objects" : 2067,"avgObjSize" : 238.20416061925496,"dataSize" : 492368,"storageSize" : 1007616,"numExtents" : 18,"indexes" : 9,"indexSize" : 138992,"fileSize" : 16777216,"nsSizeMB" : 16,"dataFileVersion" : {
                "major" : 4,"minor" : 5
        },"extentFreeList" : {
                "num" : 5,"totalSize" : 286720
        },"ok" : 1
}

我可以预测直到超出磁盘空间的天数.

我知道(从FAQs开始)“MongoDB自动使用机器上的所有可用内存作为缓存.”

>我应该如何确定是否需要更多RAM或CPU容量?
>虽然它依赖于应用程序,但RAM或CPU通常更重要吗?
> db.runCommand({serverStatus:1,workingSet:1})返回的是否应该特别注意?

解决方法

How should I determine whether I need more RAM or CPU capacity?

拥有足够的内存非常重要,这样您的索引和数据就可以适应内存以获得良好的性能.如果你的workSet不适合你的内存,你会有很多page faults.当MongoDB需要未加载到物理内存中的数据并且它必须从虚拟内存(即磁盘)读取时,会发生页面错误.
访问磁盘而不是内存会显着降低性能,因为访问磁盘比访问内存中的数据慢几个数量级. SSD磁盘很好,但它们仍然比RAM慢得多.

人们经常忘记开放的连接也需要记忆.在Linux上,每个连接的内存开销大约为10 MB(在旧版本,如v1.8).从v1.9起,根据this JIRA ticket,这个开销被改为大约1MB.因此,如果你有100个开放连接,那将大致转换为1GB(旧版本)和100MB(新版本)的内存使用量(这个数字可以已经改变了最新的MongoDB版本,所以YMMV).您可以在serverStatus命令的输出中检查connections,以查看有关当前/可用连接数的信息.

我建议你阅读MongoDB diagnostics.

Although it’s application dependent,is either RAM or CPU generally more important?

拥有更好的CPU对于CPU密集型任务非常重要,例如:扫描和排序,更新和重新平衡索引,map-reduce,聚合框架命令和服务器端JavaScript.拥有更好的CPU将有助于完成这些任务,但如果您没有足够的内存并且不断从磁盘读取,那么您的性能将会降低.

Is there anything returned by db.runCommand( { serverStatus: 1,workingSet: 1 } ) that I should pay particular attention to?

命令serverStatus是一个非常有用的工具,用于收集有关服务器的统计信息并分析服务器统计信息.

在serverStatus命令的输出中,您应该注意:

> mem包含有关当前内存使用情况的信息(虚拟和物理,即居民)
> workingSet部分包含用于估计工作集大小的值,这是MongoDB主动使用的数据量.
> extra_info – 尤其是page_faults计数器

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读