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" : 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容量? 解决方法
拥有足够的内存非常重要,这样您的索引和数据就可以适应内存以获得良好的性能.如果你的workSet不适合你的内存,你会有很多page faults.当MongoDB需要未加载到物理内存中的数据并且它必须从虚拟内存(即磁盘)读取时,会发生页面错误. 人们经常忘记开放的连接也需要记忆.在Linux上,每个连接的内存开销大约为10 MB(在旧版本,如v1.8).从v1.9起,根据this JIRA ticket,这个开销被改为大约1MB.因此,如果你有100个开放连接,那将大致转换为1GB(旧版本)和100MB(新版本)的内存使用量(这个数字可以已经改变了最新的MongoDB版本,所以YMMV).您可以在serverStatus命令的输出中检查connections,以查看有关当前/可用连接数的信息. 我建议你阅读MongoDB diagnostics.
拥有更好的CPU对于CPU密集型任务非常重要,例如:扫描和排序,更新和重新平衡索引,map-reduce,聚合框架命令和服务器端JavaScript.拥有更好的CPU将有助于完成这些任务,但如果您没有足够的内存并且不断从磁盘读取,那么您的性能将会降低.
命令serverStatus是一个非常有用的工具,用于收集有关服务器的统计信息并分析服务器统计信息. 在serverStatus命令的输出中,您应该注意: > mem包含有关当前内存使用情况的信息(虚拟和物理,即居民) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |