MongoDB CPU 路由器cpu利用率过高高,怎么破

拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3b7f3f9c-ua98).
重新安装浏览器,或使用别的浏览器-- mongodb cpu is high, infomation as below: &&
1 the message in the
as below: conn 3188663& R&& 2004 apollo.eacmscache { key: "mpage:en_US:layout./connect_default" } 10.100.10.114:37852
2 check top status,find the hightest process, the pid is 19271&& top - 02:56:01 up 830 days,& 7:12,& 3 users,& load average: 4.23, 3.68, 3.53 Tasks: 248 total,&& 1 running, 247 sleeping,&& 0 stopped,&& 0 zombie Cpu(s):& 6.7%us,& 2.7%sy,& 0.0%ni, 88.5%id,& 1.3%wa,& 0.1%hi,& 0.7%si,& 0.0%st Mem:& k total, k used,&& 138868k free,&& 231876k buffers Swap: k total,& 2134896k used, k free, k cached
& PID USER&&&&& PR& NI& VIRT& RES& SHR S %CPU %MEM&&& TIME+& COMMAND&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 19271 root&&&&& 15&& 0& 387g 9.8g 9.6g S 140.2 20.7& 48:49.53 mongod&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 14551 root&&&&& 15&& 0& 480g& 11g& 11g S 15.9 24.4& 18:21.43 mongod&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
3 find the process name of pid 19271 [root@346437-eastore_db1 ~]# ps -eaf|grep mongo root&&&& 14551&&&& 1 31 01:59 ?&&&&&&& 00:19:19 /db/mongodb/bin/mongod -f /etc/mongodb/27017.conf root&&&& 14558&&&& 1& 1 01:59 ?&&&&&&& 00:00:50 /db/mongodb/bin/mongod -f /etc/mongodb/27019.conf root&&&& & 0 03:00 pts/2&&& 00:00:00 grep mongo root&&&& 19271&&&& 1 87 02:00 ?&&&&&&& 00:53:24 /db/mongodb/bin/mongod -f /etc/mongodb/27018.conf root&&&& 2& 0 01:38 ?&&&&&&& 00:00:00 sshd: mongo [priv] mongo&&& & 0 01:40 ?&&&&&&& 00:00:00 sshd:
mongo&&& & 0 01:40 pts/1&&& 00:00:00 -bash &&it is /db/mongodb/bin/mongod -f /etc/mongodb/27018.conf
4 see the log
find the log directory in /etc/mongodb/27018.conf, it is ok, nothing error infomation.
5, see the message in
again there are many info about: apollo.eacmscache { key: "mpage:en_US:layout./connect_default" } check the db apollo anc the collecion eacmscache, the index of key is created, Is many query of apollo.eacmscache cause the cpu spike ? && 6 now, i see the w status, the cpu is normal, and why ? i can't find any error infomation about this spike. && 7 i sent email to jeff,and he told me : they are pictures cache of the website of OC,it's ok,np,ignore it,pls.
Views(...) Comments()最近开始研究MySQL和MongoDB,发现这方面资料不多。尤其是真正的说到点子上的文章,太少了。
有一些对比测试的文章基本上都是瞎测,测试方法都测到了马腿上,得出的结论基本上都是NoSQL毫无价值
容我借用Russell Smith 的那句话:不是MongoDB不行,是你不懂。
让我来分析一下MongoDB的真正性能吧。
有说MongoDB慢
  反对:不设其他唯一索引的情况下,只用_id 在普通办公电脑上每秒插入几万,在普通x86服务器上每秒插入十几万,你好意思说这个性能低?比mysql强出一个数量级。
&&&&& 赞同:检索是真的慢,和sql数据库不同,越复杂的条件搜索MangoDB越吃亏,CPU和IO的双重压力。面对那些直接把SQL查询改写成MangoDB的用法,别转了,你不会收获任何性能提升。
&&&&& 你不行:说你不行还是真的不行,MongoDB领导了NoSQL运动,NoSQL请注意,我们最主要反对的就是SQL的方法论,按SQL方法使用MangoDB你只能收获失望。再想想MongoDB的设计思想:文档化。_id 就是文件名,MongoDB是个文件系统。全文检索?别闹了,用文件名找文件,一个文件名对应一个文件,你绝对不会失望。
那么MongoDB究竟应该怎么用呢?
首先,忘记SQL
你应该忘记你学过的那些优雅无敌的SQL,不是说为了提升检索性能,扔索引就有好处。
有一个简单的事实如下:只有一个默认的_id 索引,此时插入性能为1,你再加一个索引,插入性能约1/2,再加一个约1/3 ,以此类推......
如果这个事实对你是很震撼的,那说明你还没有忘记SQL,接着忘。
MongoDB的索引对插入性能有着不可忽略的拖后腿效应,所以,我们应该使用且仅使用 _id 作为插入key,作为查询key,作为所有的那个key。
其次,直接忘记搜索这件事。
把MongoDB当做你的硬盘,给他文件名去操作文件.这就是Key-Value数据库的做法,你稍加设计就能这么用。
那么其实你所有的操作可以简化为两个指令,逻辑上 就是一个字典
你给他_id,往字典里插一个数据,或者拿一个数据。
Save({_id:xxx,.....})
FindOne({_id:xxx})
要想高性能,善用那个_id,把你原来准备当主键的那个玩意,hash成_id.
把你原来准备的查询条件,什么?查询,拿_id来,别的全砍掉。
第三、这不是数据表
记住,这不是数据表,一个_id对应的东西不是一行数据,而是一个文件。
文件存储和表存储有什么不同呢?
我举个例子,比如我们要存储用户列表和每个用户的道具列表。
数据表的做法是建一张用户表,一张道具表,道具表里有个字段表示他属于哪个用户。
然后,你就离不开万恶的查询了。
然后如果一个用户有100条道具,100万用户意味着道具表有一亿条记录。
这时候就开始考验你的小数据库了,但这都是过去式了,这一亿的道具,用MongoDB,根本不是个事儿
因为MongoDB的方法是当做文件存,只设计一个用户集合,每个用户的信息是一个文件,然后这100个道具就分开存在每个用户的文件里。
然后来比较一下,我们取得用户的记录,然后从中拿出100个道具,NoSQL方法。
查一亿的表,找出属于某个用户的记录。
熟快熟慢?
然后你可能回想,SQL方法,我也可以搞个道具字段,把用户的100个道具用某种协议打包,然后操作啊,一样可以取得巨大的优化呀。
没错,你的想法很好,你正在用NOSQL的方式用SQL。
第四、文件存储的精华之处
如果问题止于此处,MongoDB就毫无优势可言了,如果这个方法在SQL数据库上也是如此容易使用,那还费劲搞MongoDB干什么?
我们再折腾一点,如果每个道具还要存100条转手记录,你还是可以打包,但你这个打包字段已经1M了。
于是每次存取这个打包字段都是一个系统工程了,还要负担1M的流量。
MongoDB这边呢?我们可以直接对文件的一部分进行读写,比如我只返回一个用户的第二个道具的信息,和返回第二个道具的第1~30条转手记录。
这,是一种怎样的差距啊。
你想要一张美女的照片,你朋友有,但是他只有一个压缩包,他那里没有解包工具,于是他把整个包传给了你。他想问你要一张照片,但是他没有压缩工具,为了存档需要,他让你再压进包里传给他。
这个朋友就是你的用户表的一行,如果换成真实世界的事件是多么的不可思议,这就是在一个字段里打包数据的问题。
MongoDB的一条记录就是一个脑筋更正常的朋友,你要他一张照片,他从包里找出来给你。你给他一张照片,他分门别类的放置到他的包里去。
用文件的思维去访问,MongoDB是一个更好的朋友。
审视一下你项目中的大部分的数据需求,是不是都可以用这种方式去组织呢?
如果是,加入NOSQL吧,我们的口号是:很暴力不SQL
还有什么好处&
1.不用逻辑关心的水平切分
  无需多言,对MongoDB而言,这是运维人员的工作了
2.不用对齐的数据结构
  不用对齐意味着你不用为以前表结构变化的迁移烦恼,有些文件里有一个部分,有些没有,这对MongoDB而言,很正常。
阅读(...) 评论()mongodb内存占用怎么解决?
输入手机号码,报价结果将发送到您手机
装修顾问-馨馨
4年行业经验,24h可咨询
10秒闪电通过好友
报价短信已发送到您的手机
因材料品牌及工程量不同,具体报价以量房实测为准
稍候装修管家将回电您,免费提供装修咨询服务
您的装修预算约
*装修管家将回电您,免费提供装修咨询服务
*装修管家将回电您,免费提供装修咨询服务
*因材料品牌及工程量不同,具体报价以量房实测为准
装修顾问 -馨馨
(四年装修行业经验)
微信扫一扫
3.&您家小区名称 :&&
请选择您家的装修时间
mongodb内存占用怎么解决?
提问者:任嘉玉|
浏览次数:222|
时间: 10:48:50
我来帮他解答
还可以输入1500字
已有3条回答
回答数:49100
被采纳数:7
mongodb用多少内存是操作系统控制的, 别的进程不用内存的话, mongodb就占内存多; 别的进程需要内存的时候, 操作系统会释放mongodb占的内存。
希望我的回答对您有所帮助!
回答数:15464
被采纳数:5
你按下面的方法设置一下,应该对系统性能有明显的提升。
1、鼠标右键单击“我的电脑”选择“属性”--“高级”――-在性能栏点击“设置”按钮,此时将弹出“性能选项”窗口,选择“调整为最佳性能”。点击“应用”按钮,确定退出。
2、点击&开始&--运行--输入msconfig后回车--点击&启动&--只保留&ctfmon\\杀毒软件\\防火墙,&其它前面的勾都去掉.--然后点击&应用&--点击&确定&.
3、鼠标右键单击“我的电脑”选择“属性”-系统还原-选择“在所有驱动器上关闭系统还原”。点“应用”确定退出。(也可保留C盘的系统还原)
4、在“我的电脑”上点右键-属性-硬件-设备管理器-点击“IDE ATA/ATAPI”选项-双击“次要IDE通道”-高级设置-设备类型,将“自动检测”改为“无”,主要IDE通道也做相同的设置
5、在“开始→运行”中输入gpedit.msc,打开组策略编辑器。找到“计算机配置→管理模板→网络→QoS数据包调度程序”,选择右边的“限制可保留带宽”,选择“属性”打开限制可保留带宽属性对话框,选择“禁用”即可。这样就释放了保留的带宽
6、建议你下载超级兔子软件让它帮助你经常清理系统垃圾。(如垃圾文件、系统注册表垃圾)
7、建议将你电脑中的IE临时文件和虚拟内存设置在非系统盘中 。
8、在平时不要同时打开太多的应用程序软件,将杀毒软件或其它优化软件的监控功能关闭,因为杀毒软件或其它优化软件的监控功能特别占据系统资源。
9、重启电脑,启动到桌面后,会弹出一个窗口,在小方格中添加勾选,点“确定” 。(因为改动了系统配置实用程序) 。
回答数:6028
被采纳数:2
你好,我了解到的如下:
mongodb 直接用操作系统的内存管理器来管理内存。而操作系统采用的是LRU算法淘汰冷数据。
mongodb可以用重启服务、调整内核参数以及mongodb内部的语法去清理mongodb对内存的缓存。可能存在的问题是:这几种清理方式都是全部清理,这样的话mongodb的内存缓存就失效了。
mongodb 对内存的使用是可以被监控的,在生产环境中要定时的去监控这些数据。
mongodb 对内存这种占用方式使其尽量的和其他占用内存的业务分开部署,例如memcahe,sphinx,mysql等。
操作系统中的交换分区swap 如果操作频繁的话,会严重降低系统效率。要解决可以禁用交换分区,以及增加内存以及做分布式。
生产环境中mongodb所在的主机应该尽量的大内存。
希望我的回答对你有帮助。

我要回帖

更多关于 磁盘利用率高 的文章

 

随机推荐