专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

网易二面CPU狂飙900,该怎么处理?

  社群一位小伙伴面试了网易,遇到了一个性能类的面试题:CPU飙升900,该怎么处理?
  首先,说明一下问题:CPU飙升200以上是生产容易发生的场景场景:1:MySQL进程飙升900
  大家在使用MySQL过程,想必都有遇到过CPU突然过高,或者达到200以上的情况。
  数据库执行查询或数据修改操作时,系统需要消耗大量的CPU资源维护从存储系统、内存数据中的一致性。
  并发量大并且大量SQL性能低的情况下,比如字段是没有建立索引,则会导致快速CPU飙升,如果还开启了慢日志记录,会导致性能更加恶化。生产上有MYSQL飙升900的恶劣情况。场景2:Java进程飙升900
  一般来说Java进程不做大量CPU运算,正常情况下,CPU应该在100200之间,
  但是,一旦高并发场景,要么走到了死循环,要么就是在做大量的GC,容易出现这种CPU飙升的情况,CPU飙升900,是完全有可能的。其他场景:其他的类似进程飙升900的场景
  比如Redis、Nginx等等。场景一:MySQL进程CPU飙升到900,怎么处理?
  定位过程:使用top命令观察,确定是mysqld导致还是其他原因。如果是mysqld导致的,showprocesslist,查看session情况,确定是不是有消耗资源的sql在运行。找出消耗高的sql,看看执行计划是否准确,index是否缺失,或者实在是数据量太大造成。
  处理过程:kill掉这些线程(同时观察cpu使用率是否下降),一般来说,肯定要kill掉这些线程(同时观察cpu使用率是否下降),等进行相应的调整(比如说加索引、改sql、改内存参数)之后,再重新跑这些SQL。进行相应的调整(比如说加索引、改sql、改内存参数)index是否缺失,如果是,则建立索引。也有可能是每个sql消耗资源并不多,但是突然之间,有大量的session连进来导致cpu飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等优化的过程,往往不是一步完成的,而是一步一步,执行一项优化措辞,再观察,再优化。场景1的真实案例:MySQL数据库优化的真实案例
  本问题亲身经历过。
  之前开发同事编写的SQL语句,就导致过线上CPU过高,MySQL的CPU使用率达到900,通过优化最后降低到7080。下面说说个人在这个过程中的排查思路。
  首先,我们要对问题定位而不是盲目的开启什么慢日志,在并发量大并且大量SQL性能低的情况下,开启慢日志无意是将MySQL推向崩溃的边缘。
  当时遇到这个情况,分析了当前的数据量、索引情况、缓存使用情况。目测数据量不大,也就几百万条而已。接下来就去定位索引、缓存问题。经过询问,发现很多查询都是走MySQL,没有用到缓存。既然没有用到缓存,则是大量请求全部查询MySQL导致。通过下面的命令查看:showprocesslist;
  发现类似很多相同的SQL语句,一直处于query状态中。selectidformuserwhereusercodexxxxx;
  初步分析可能是usercode字段没有索引导致。接着查询user表的索引情况:showindexformuser;
  发现这个字段是没有建立索引。增加索引之后,该条SQL查询能够正常执行。
  3、没隔一会,又发生大量的请求超时问题。接着进行分析,发现是开启了慢日志查询。大量的SQL查询语句超过慢日志设置的阀值,于是将慢日志关闭之后,速度瞬间提升。CPU的使用率基本保持在300左右。但还不是理想状态。
  4、紧接着将部分实时查询数据的SQL语句,都通过缓存(redis)读写实现。观察一段时间后,基本维持在了7080。
  总结:其实本次事故的解决很简单,就是添加索引与缓存结合使用。不推荐在这种CPU使用过高的情况下进行慢日志的开启。因为大量的请求,如果真是慢日志问题会发生日志磁盘写入,性能贼低。直接通过MySQLshowprocesslist命令查看,基本能清晰的定位出部分查询问题严重的SQL语句,在针对该SQL语句进行分析。一般可能就是索引、锁、查询大量字段、大表等问题导致。再则一定要使用缓存系统,降低对MySQL的查询频次。对于内存调优,也是一种解决方案。
  场景2展开:Java进程CPU飙升到900,怎么处理?
  定位过程:
  CPU飙升问题定位的一般步骤是:首先通过top指令查看当前占用CPU较高的进程PID;查看当前进程消耗资源的线程PID:topHpPID通过print命令将线程PID转为16进制,根据该16进制值去打印的堆栈日志内查询,查看该线程所驻留的方法位置。通过jstack命令,查看栈信息,定位到线程对应的具体代码。分析代码解决问题。
  处理过程:如果是空循环,或者空自旋。处理方式:可以使用Thread。sleep或者加锁,让线程适当的阻塞。在循环的代码逻辑中,创建大量的新对象导致频繁GC。比如,从mysql查出了大量的数据,比如100W以上等等。处理方式:可以减少对象的创建数量,或者,可以考虑使用对象池。其他的一些造成CPU飙升的场景,比如selector空轮训导致CPU飙升。处理方式:参考Netty源码,无效的事件查询到了一定的次数,进行selector重建。
  Java的CPU飙升700优化的真实案例
  最近负责的一个项目上线,运行一段时间后发现对应的进程竟然占用了700的CPU,导致公司的物理服务器都不堪重负,频繁宕机。
  那么,针对这类java进程CPU飙升的问题,我们一般要怎么去定位解决呢?、
  采用top命令定位进程
  登录服务器,执行top命令,查看CPU占用情况,找到进程的pidtop
  很容易发现,PID为29706的java进程的CPU飙升到700多,且一直降不下来,很显然出现了问题。使用topHp命令定位线程
  使用topHp命令(为Java进程的id号)查看该Java进程内所有线程的资源占用情况(按shftp按照cpu占用进行排序,按shiftm按照内存占用进行排序)
  此处按照cpu排序:topHp23602
  很容易发现,多个线程的CPU占用达到了90多。我们挑选线程号为30309的线程继续分析。
  使用jstack命令定位代码
  1。线程号转换5为16进制
  printfx命令(tid指线程的id号)将以上10进制的线程号转换为16进制:printfx30309
  转换后的结果分别为7665,由于导出的线程快照中线程的nid是16进制的,而16进制以0x开头,所以对应的16进制的线程号nid为0x7665
  2。采用jstack命令导出线程快照
  通过使用dk自带命令jstack获取该java进程的线程快照并输入到文件中:jstackl进程ID。jstackresult。txt
  命令(为Java进程的id号)来获取线程快照结果并输入到指定文件。jstackl29706。jstackresult。txt
  3。根据线程号定位具体代码
  在jstackresult。txt文件中根据线程好nid搜索对应的线程描述catjstackresult。txtgrepA1007665
  根据搜索结果,判断应该是ImageConverter。run()方法中的代码出现问题
  当然,这里也可以直接采用jstackpidgrepA200nid
  来定位具体代码jstack44529grepA200ae24SystemClock28daemonprio5osprio0tid0x00007efc19e8e800nid0xae24waitingoncondition〔0x00007efbe0d91000〕java。lang。Thread。State:TIMEDWAITING(sleeping)atjava。lang。Thread。sleep(NativeMethod)atjava。lang。Thread。sleep(Thread。java:340)atjava。util。concurrentC。TimeUnit。sleep(TimeUnit。java:386)atcom。。order。Controller。OrderController。detail(OrderController。java:37)业务代码阻塞点
  分析代码解决问题
  下面是ImageConverter。run()方法中的部分核心代码。
  逻辑说明:存储minicap的socket连接返回的数据(改用消息队列存储读到的流数据),设置阻塞队列长度,防止出现内存溢出全局变量privateBlockingQueuebyte〔〕dataQueuenewLinkedBlockingQueuebyte〔〕(100000);消费线程Overridepublicvoidrun(){longstartSystem。currentTimeMillis();while(isRunning){分析这里从LinkedBlockingQueueif(dataQueue。isEmpty()){continue;}byte〔〕bufferdevice。getMinicap()。dataQueue。poll();intlenbuffer。length;}
  在while循环中,不断读取堵塞队列dataQueue中的数据,如果数据为空,则执行continue进行下一次循环。
  如果不为空,则通过poll()方法读取数据,做相关逻辑处理。
  初看这段代码好像每什么问题,但是如果dataQueue对象长期为空的话,这里就会一直空循环,导致CPU飙升。
  那么如果解决呢?
  分析LinkedBlockingQueue阻塞队列的API发现:取出队列中的头部元素,如果队列为空则调用此方法的线程被阻塞等待,直到有元素能被取出,如果等待过程被中断则抛出InterruptedExceptionEtake()throwsInterruptedException;取出队列中的头部元素,如果队列为空返回nullEpoll();
  这两种取值的API,显然take方法更时候这里的场景。
  代码修改为:while(isRunning){if(device。getMinicap()。dataQueue。isEmpty()){continue;}byte〔〕buffernewbyte〔0〕;try{bufferdevice。getMinicap()。dataQueue。take();}catch(InterruptedExceptione){e。printStackTrace();}}
  重启项目后,测试发现项目运行稳定,对应项目进程的CPU消耗占比不到10。

埃弗拉我没有为曼联的惨败失去理智,如今红魔正朝正确方向前进直播吧3月7日讯曼联客场0比7惨败利物浦的余震仍在,日前曼联名宿埃弗拉和费迪南德作客FIVE播客时谈到了这场比赛。埃弗拉说我从来没有失去理智,如今的曼联正朝着正确的方向前进,但他们非常详细通过时间轮(TimingWheel)实现延时队列的原理指南时间轮的介绍时间轮(TimeWheel)是一种实现延迟功能(定时器)的精妙的高级算法,其算法应用范围非常广泛,在Java开发过程中常用的DubboNettyAkkaQuartzZo关于午睡的最新研究白天多睡1小时,老年痴呆概率或增加40?赶紧起床,再睡就睡成痴呆了!烦死了,睡觉都不让人好好睡!今年65岁的老王,在退休前就有午睡的习惯,但之前要上班,午睡只能睡半个小时。而自从退休后,没了限制,中午一睡就是两个小时以上上海爷爷反油腻的秘诀不穿老头衫,不戴老年帽,时髦有腔调很多到了老年阶段的男人,在穿衣打扮上容易给人一种自暴自弃的感觉,过于随性邋遢,毫无时尚感可言,还显得油腻没气质。年龄颜值和身材,并不是决定着造型时尚完成度的唯一因素,穿搭重点在于怎塘沽街道紫云东社区开展追寻红色记忆弘扬爱国精神参观活动来源津滨海客户端津滨海讯(记者于馨然摄影报道)日前,塘沽街道紫云东社区联合紫云中学为新疆班学生开展追寻红色记忆弘扬爱国精神塘沽红色记忆馆参观活动,让学生们重温伟人业绩和革命先辈红色雪花那个飘刘翠翠自我感动式的爱,伤了自己也伤了身边人!我在头条对她说刘翠翠这个人物一路走来让人又爱又恨,深爱一个人到极致是什么样?是刘翠翠!深恨一个人到极致是什么样,应该还是刘翠翠!赵长天是来凤凰屯插队的知青,无聊的发慌的日子,知青彼蜜蜡有什么功效和作用,日常保养,你需要了解的知识一介绍蜜蜡,又称琥珀,是一种有机宝石,是由树脂和其他有机物质形成的。它的颜色可以从淡黄色到深棕色,通常具有透明度,但也可以是半透明或不透明的。蜜蜡在许多文化中都被视为一种珍贵的宝石2023非洲数字化及非洲国家重点发展领域本文来自微信公众号传音开发者(IDTranssionDeveloper)。如需转载请留言或者邮箱联系授权。更多出海非洲内容,敬请关注公众号非洲正加快其数字化进程,COVID19大流重启新消费!广东省坚持制造业当家中国小康网独家专稿文小康中国小康网记者刘彦华实施制造业当家一把手工程,开展亩均等高质量发展考核评价广东省政府工作报告强调,广东过去以制造业起家,也必将依靠制造业当家赢得未来,在新的点燃科技强国梦北理工华附共建校本选修课新学期开课南都讯记者孙小鹏通讯员哈楠日前,著名人工智能领域科学家北京理工大学博士生导师罗庆生教授走进华南师范大学附属中学,以特种机器人与未来战争为主题为学生们讲授知识。据悉,该讲座也是北理工科学强国上海天文馆有限空间里的无垠宇宙(上)喜讯传来!2022年11月15日,在美国奥兰多举行的国际游乐园和景点协会IAAPA博览会上,国际主题娱乐协会TEA宣布了西娅奖杰出成就奖获奖名单。上海天文馆(上海科技馆分馆)成为全
倍思N10挂脖穿戴式音箱评测,解放双耳,听音新潮流倍思N10挂脖穿戴式音箱,是一款非常新奇的音箱,将音箱做成了可穿戴式。说实话,在我刚拿到这款穿戴式音箱时,让我眼前一亮,有一种来自未来的错觉。在此感谢ZEALER众测提供的倍思N1WiFi6全千兆智能组网路由,蒲公英X5远程访问教程公司在用的宽带从100兆升级成为300兆,之前的百兆企业路由就有点扯后腿了,本着资源利用率最大化的原则,一并升级一下现有的网络设备,解决大家一直苦恼的网络信号弱速度慢的问题,当然,如果再买电视机,一定坚持5不买,不是固执,是连买三台的经验电视换新该怎么选,注意哪些参数,哪些品牌更靠谱,这是很多朋友的烦恼,毕竟自己不是专业的从业人士,对很多东西并没有那么了解。关于性价比,是一件很神奇的事情,例如小米之类的品牌确实将参大S具俊晔合拍封面,被赞美女野兽好养眼,更自曝受够了结婚的一切近日,大S和老公具俊晔合作的一组杂志封面大片曝光,引发网友热议。两人风格大胆,尝试了居家浴袍风格。照片中,大S手里拿着刮胡刀具,搂着端坐着的老公,细心地给具俊晔刮着胡子。夫妻俩看起陈妍希晒母子合照,小星星穿皮衣戴墨镜臭美,酷拽样像极爸爸陈晓10月3日晚,陈妍希久违晒出母子合照,并开心发文称出门帅一个。所以,陈妍希这是要带着儿子小星星一起出门玩耍了吗?赶在出门之前,陈妍希还不忘带着儿子小星星一起整理下造型,做好形象工作CBA最美女老板久违现身!一袭黑色连衣裙亮相,干练短发气场十足还记得有着标志性短发的CBA最美女老板伍佰兰吗?伍佰兰是CBA福建队的总经理,这次她久违地出现在球队出征联赛的赛前仪式上,让不少球迷终于看到了她的近态。现身仪式的伍佰兰穿着一身黑色马蓉罕携女儿高调走机场,她一身大牌只顾自己美,女儿像她小跟班中年女性在穿衣搭配上存在很多误区和迷茫,因为年龄处于中间位置,造型既不可以打造得过于成熟,也不能让自己有故意扮嫩的嫌疑,所以想要真正实现高质量的打扮,无疑是一件不容易的事情,不过只背薄了,才显年轻!背部吸脂术后即刻效果真实记录先说一下这位求美者的情况,小姑娘23岁,刚毕业实习,她的困扰就是因为背厚穿衣服不好看,和朋友走在一起,明明同样的年龄,自己总是很显老,没有少女感。她呢,体重105斤,不重,但上半身GIVENCHY女郎,凌厉而柔软不同文化间的相互影响,在这一季的系列中得以充分体现。当地时间10月2日1600,GIVENCHY纪梵希2023春夏女士成衣及配饰系列于巴黎植物园(JardindesPlantes)少女写真6变白皮肤可以通过光子嫩肤黑脸娃娃等方式,另外还可以通过食物调理改善。1光子嫩肤变白皮肤可以通过光子嫩肤的方式,利用特定仪器发射彩光光束,能够粉碎皮下色素细胞,并促使其代谢排出,可以刘亦菲不愧是人间仙子,穿玫红色抹胸连衣裙,气场不输超模刘亦菲的美貌在整个娱乐圈中都是顶级的,她的颜值和气质让人非常羡慕,而且出道这么多年还是很美。这一次就搭配了玫红色抹胸连衣裙,秀出了好身材,看起来太温柔了,这种抹胸连衣裙搭配起来,修
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网