Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 我怎么知道MongoDB是否需要更多CPU / RAM?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一台运行在便宜的 Linux VPS(1 x 2.0GHz CPU和1GB RAM)上的MongoDB服务器. 现在已经有一天了,db.stats()的输出看起来很合理. db.stats() { "db" : "app", "collections" : 11, "objects" : 2067, "avgObjSize" :
我有一台运行在便宜的 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,"@R_875_10586@lSize" : 286720
        },"ok" : 1
}

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

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

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

解决方法

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

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

我建议你阅读MongoDB diagnostics.

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

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

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

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

大佬总结

以上是大佬教程为你收集整理的linux – 我怎么知道MongoDB是否需要更多CPU / RAM?全部内容,希望文章能够帮你解决linux – 我怎么知道MongoDB是否需要更多CPU / RAM?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。