粉丝10.3万获赞48.7万

康老师,有位汤粉在粉丝群里面问了这么一个问题,说项目在上午发布的时候还好好的,到了下午呢,发现服务器 cpu 飙升到了百分之百,一下子就给整蒙了, 不知道如何去排查,那么是你能分享一下这样的一个排查思路吗?好的,这个问题的话,主要的核心点就是要找到加我代码的位置,那下面呢,我分享一下我的一个排查思路,比如说我以这个生的 os 为例,总结下来的话,大概是有四个步骤, 第一个步骤呢,就是要使用 top 命令去找到 cpu 高的一个进程。然后第二步呢,要使用 ps 杠 mp 找到进程下面占用 cpu 高的一个线程 id。 第三步呢,就是要使用 pro 的 f 命令去将线程 id 转换成一个十六进字的一个表示。 最后第四步就是使用接时代的命令去输出现成的一个运行的一个状态的日志信息。根据毕生所学,给大家研制了一份嘉华程序员的一个求职突击手册, 简历模板面试出积压题一周的一个技术提升以及嘉娃提升的一个完整学习路线。领取方式呢,在我视频主页,一册在手,保你高薪无忧。那他们说你能不能详细讲解每一个步骤的一个操作细节吗? 可以的,如果这么甘肃呢?可能各位汤粉呢不一定能够听得明白,所以呢,我在网上来找了几张图,那首先呢,大家可以看一下, 第一步的话就是可以看到使用 top 之后呢可以看到一个列表,比如说包括 p i d, 进程就是进程 i d, 然后呢就是优色,就是操作用户,第三个就是 cpu 的一个占用率,然后呢就是 是内存占用率,以及这个他们家也就是说这个程序的一个运行时间,还有最后就是一个 command 的一个运行命令等等这些信息,那么一般呢他会默认按照 cpu 的一个占用率从上往下按降速排列, 我们呢只要找到 command 这一页,如果显示的是 java, 那么这一行呢说明这个程序就是 java 写的。然后呢再用记事本去记下这一行的一个 pid, 也就是记下这个精彩 id, 然后就是第二步,第二步呢就是使用 ps 杠 m p 命令去输出一个 p i d 下面所有的这些线程的一个运行情况。那么呢我也找了一张图, 那么这个列表呢,它也包括几个关键的字段,比如说像 cpu 的占用率还有 tid, 现场 id, 还有就是 这个他们运行时间等等这些信息。然后呢在这个列表中呢就可以找到 cpu 占用率最高,然后呢在这个列表中呢就可以找到 cpu 占用,然后呢在这个列表中就可以找到 cpu 占用率最高的一个县城。同样的呢也用记事本记下这个现场 id, 那么他叫做 tid。 然后呢我们接下来这个 t i d 呢,它是一个十进制的数字,它不能直接使用,所以呢需要转化为十六进制才能使用,所以呢第三步呢就是使用 print f mini 去将 t i d 转化为一个十六进制的表示, 那么这样的话就得到了一个真正占用 cpu 过高的一个线程 id。 最后第四步呢就可以使用 jstech 命令了,那么通过这个命令呢,就可以去输出现成的一个具体运行日志, jstech 这个命令呢有三个参数, 在第三个后面紧跟着一个参数,就是去我们填上我们前面记下的一个 p i d, 然后呢再加上一个 grap, 紧跟着就是一个我们刚刚转化成十六字的一个 t i d, 也就是现场 id, 那么最后呢加上一个杠 a, 然后再接一个数字表示呢我们要输出的一个日字的行数,那么这样呢,就可以直接打印出具体的一个异常信息了。哦,明白了, 那如果是日志信息比较多,很难定位问题怎么办?那如果日志信息比较多,而且呢异常内容也比较复杂的话,我们就可以把这些异常信息呢输出到一个 txt 文件,我们留着来慢慢分析, 也就是说只需要在 jstank 命令的最后去追加一个 txt 文件就可以了。以上呢就是我的一个排查思路的一个分享,那么各位汤粉呢,如果你有更好的思路的话,可以在评论区分享一下。

面试过程中,场景类的问题更容易去检测出一个开发人员的基本能力,这不,一个小伙伴去阿里面试,第一面就遇到关于 cpu 标高,系统反应慢,怎么排查这个问题。对这个问题呢,我们来看看普通人和高手的回答。普通人的回答 啊,那个 cpu 标高的原因就是因为就 cpu 它是用来去掉入现成的吗?所以 就如果 cpu 比较高的情况下,那他应该是就县城资源创建过多, 然后就是导致我我我 cpu 只有一直在处于运行状态,然后导致 cpu 的一个利用率过高。呃,排插的方法的话,我们之前公司都是有这种监控系统的, 然后通过监控上报的方式,然后告诉我们大概哪个地方的哪个应用 cpu 的这个预值就比较高,那这种情况下,我可能就是会去通过这个方式去定位。嗯, 高手的回答。嗯,关于这个问题呢,我从四个方面来回答。首先 cpu 是整个电脑的核心计算资源,对于一个应用程序来说, cpu 的最小执行单元是现成。导致 cpu 标高的原因呢,有几个方面,第一个是 cpu 的上下纹切换过多, 对于 cpu 来说,同一个时刻下,每个 cpu 核心只能运行一个县城,如果有多个县城要去被执行怎么办呢? cpu 只能通过上下纹切换的方式来执行调度不同的县城上下纹切换呢,需要做两个事情,第一个是 保存运行中现成的执行状态,第二个让处于等待中的现成恢复执行。 这两个过程呢,需要 cpu 执行内核相关指令去实现状态的保存和恢复,如果较多的上下纹切换会占据大量的 cpu 资源,从而使得 cpu 无法去执行用户进程中的真正指令,导致响应速度下降。 在加号中,文件 io、 网络 io 所等待这些都会去造成现成主社,而现成主社就会去导致 cpu 的上限为切换。第二, cpu 资源过度消耗,也就是在程序中创建了大量的县城,或者有县城一直占据 cpu 资源无法被释放,比如说像死循环, cpu 利用率过高之后呢,导致应用程序中的县城无法去获得 cp 的调度,从而影响程序的执行效率。所以既然是这两个问题导致 cpu 利用率较高,于是我们可以通过 top 命令找到 cpu 利用率较高的进程,再通过 shift 加 h 找到进程中 cpu 消耗过高的现成。 这里呢,有两种情况,第一种情况, cpu 利用率过高的现成一直是同一个,也就是现成 id 没有变化,说明在程序中存在长期占用 cpu 没有释放的一个情况。那么这种情况呢,直接可以通过 jstec 获得县城的当铺日志,定位到县城日之后就可以找到问题的代码。第二个是 cpu 利用率过高的县城 id 一直在不断变化,那么说明县城创建过多,需要去挑选几个县城 id, 通过即 stack 去县城当铺中去进行排查。 最后呢,有可能定位的结果是程序正常,只是在 cpu 标高的那一刻,用户访问量非常大,导致系统资源不够,那么这个时候呢,我们需要采取的手段是去增加系统资源。以上就是我对这个问题的一个理解, 从这个问题来看呢,面试官主要考察的是实操能力以及解决问题的思路,如果你没有实操过,但是你知道导致 cpu 标高这个现象的原因啊,先说出你的解决思路,通过面试是没问题的。 好的,本期的普通人 vs 高手面试系列的视频呢,就到这结束了,如果你在面试的时候呢,遇到了一些比较刁钻和奇葩的问题,欢迎在评论区给我留言,我会在下一期的视频中去给大家做一个解答。我是 mike, 一个工作了十四年的家务程序员,咱们下期再见。

在线上服务器遇到 cpu 占用高的问题如何解决呢?首先我们可以通过 top 杠 c 去查看 cpu 占用比较高的一个进程 id, 比如说我这里可以看到这个 cpu 占用比较高,然后我们通过这个进程 id 去拿到 cpu 占用比较高的一个线上 id, 这里我们可以看到是有关于这个县城占用比较高,然后我们需要将这个县城 id 转换成我们十六禁制, 再通过 java 的杰斯 tank 去搜索这个晋城 id, 然后去过滤到我们其中的一个县城 id, 这里我们采用这个十六禁止,然后我们去搜索一下, 这时我们可以去看一下前二十行,这里就可以看到是我们这里有一个命县城,然后这里面有一个加瓦的一个测试 cpu 的一个代码,然后这里是第三行和第七行有问题,我们来看一下这个相关的一个内, 这里可以看到第三行是有关于这个方法,然后这个方法是调用下面,然后可以看到这里面有一个死循环,所以说就导致我们这个 cpu 占用比较高。然后在疙瘩上面有这么一个仓库,这个仓库里面提供了加瓦的一个脚本,也就说这个它可以用于快速排查加瓦的 cpu 性能问题, 我们来看下他的一个说明,这里有说到我们常用定位 cpu 过高的步骤,比如说第一步先通过 top 去查看比较高的一个进程以及现成 id, 拿到这个现成 id 之后,然后我们再去转换成我们的一个十六镜子,然后再通过加瓦的杰斯 tank 去查看对应的现成站,然后分析问题, 这个过程就比较繁琐很慢了,所以说他这里提供了这个脚本,可以支持很多操作,比如说我们可以杠屁去指定 java 的进程 id, 就可以找到消耗 cpu 的线层了, 可以看到通过这条命令我们就直接定位到是这个米线城啊中的这个三行和七行代码有问题。当然如果说你有 rss 环境,也可以通过 rss 去快速去诊断分析甲瓦的 cpu 问题。 以上是单节点的 cpu 问题排查,那么在集群服务器下又如何排查这个 cpu 问题呢?你们会不会一台一台服务器进行手枪命令呢?

我们看一个线上的真实问题啊,线上加法项目 cpu 突然使用百分之百了,怎么去排查? 好,那我们来看一下,那首先呢我们在另一个伏击上啊,通过透过命令来看一下,哎,看一下之后呢,我们发现啊,这有一个进程哎,他的使用率很高,而且在不断的增长,哎,那么到时候他会 标到百分之百,好,那么这个加法进程他的 p ad 啊,是幺六七七,然后呢我们可以查一下这个 p ad 的那些线程,那么这个是我们可以通过呢拓步,然后杠大写的 h p, 然后呢我们的幺六七七, 好,那么这样的话呢,我们就可以找到它里面有很多的县城,哎,那么 cpu 使用比较高的就是这个县城,那么他的 p a d 是幺七零零,我们把这个 p a d 的现成啊,这个 p a d, 然后把它转换成十六进制,那么这个时候我们可以通过 plun 的 f 啊,然后呢我们转换一下,才开始幺七零零, 好,那么他的指标就是六 a 四啊,六 a 四,好,那么然后呢我们通过 gs 代表 点,这个我们那个加外进程是多少呢?哎,那个编号我们刚刚看到了,是幺六七七啊这个进程,那我们找到幺六七七啊,幺六七七,然后把它生成到一个文件里面去啊,比如说我们叫 x 这么一个文件啊,太子这个文件里面去, 好,那么申请好了,申请好之后呢,我们这里面就有个这个 x 点太的文件,那么这个时候我们通过 vip 打开一下,打开,打开之后呢,我们 搜一下,我们刚才那个转成这个石油进字之后呢,他是这样一个词,是多少字呢?就是这个六 s 啊,在六 s, 对吧?六 s, 然后我们这里去搜一下啊,斜杠啊,然后六 s, 然后粘进来搜一下,好,搜一下之后呢,那么就在这个地方啊,就这地方,那么他的县城就是这个,这个县城, 哎,那么使用 cpu 占用量比较高啊,就这个,那我们往下走一下,看一下代码,哎,往下走,那么这个往下走一下,走一下 啊,走的时候我们看一下,那么这里面有一些代码,就是加我的代码,我们可以看到呢,这个地方就是我们业务代码,哎,那就是这个卡丘了里面啊,这个地方啊, 哎,在这个 ctrl 的第十九行,哎,这个位置导致我们 cbu 占用过高,那么这个时候也要开始去排查这一行代码是什么原因。好,那么这就是我们排查一个啊, cbu 占用百分之百这个问题的一个过程。

网易二面真实面试题出现 cpu 使用率飙升怎么办?首先 cpu 使用率飙升的话呢,肯定要有监控系统来通知咱们,那无论用的是普罗米修斯还是加比克斯,咱们都会得到这样一个信息。 那么首先在得到信息之后,咱们就要查看在当前环境中,哪个进程占用着大量的 cpu 资源,咱们可以直接采用炮火指令去查看咱们系统资源的使用情况。 那么在列表中咱们就可以直接看到占用资源的那个进程的 pad 以及咱们 cpu 使用率的一些信息。 那当你查看到占用 cpo 的元凶之后,咱们就可以再次采用 top gunhp 的命令去查看当前进程哪个县城在做妖。之后直接将县城的 pid 转成十六进制,再通过 jcetic 命令找 找到对应的高 cpu 占用的现成,再通过他的堆占信息看一下是哪个类中造成的问题。那再直接去排查指定的代码逻辑就可以了。 当然有很多比较方便的脚本可以直接查看 cpu 资源过高的现成信息,也可以采用像阿里开园的阿尔萨斯,咱们会以相对更友好的方式去显示 gm 中的一些进程信息。哈哈哈哈哈哈,哎呀,腰疼!

好, ok, 然后今天给大家分享一下我们线上服务器 cpu 标高的排查步骤,然后这里我们有一个 springboot 的一个工程,然后并且写了一个定时任务,现在我们把它给部署到自己的一个服务器, 然后我们可以看一下现在已经把包给上传上来,然后大概的话分为我们四步,我们首先通过套红命令查看当前 cpu 标格,呃,最高的是这一个竞争 id, 这个进程 id, 我们通过进程 id 需要去找到它的一个现场 id, 就通过 top 杠 h 杠屏得到 得到对应的一个现成情况,可以看到是这个第四任务,然后他的一个现成 id, 我们这里也首先要把现成 id 给转化成十六金子。 好,我这里也给大家总结了一个相对应的一个步骤,是这样的 啊,转化成这一个十六镜子,转化成十六镜子之后,我们可以通过啊 jistech 命令来输出对应的进程 id 的一个对战信息。好,我们把它给转过来。 好,可以看得到已经输出出来了,我们看一下具体代码报错的一个行数,在我们的一个十九行 贴纸卸掉这一个类的十九行,是我们的一个死循环,所以说,呃,在我们的工作中当中的话,通过这几步就可以把它给 排查出来。当然第五波的话可以可以不用做,因为我们如果想要把对战信息全部给导出来的话,可以把可以用这个命令就把它给输出成 thick log。 好, ok, 然后觉得有用的可以帮忙点点赞,点点关注,然后你的支持就是我更新的动力,好,谢谢大家。

哈喽,今天给大家分享一下 r s s 如何排查我们线上 c p u 标高的问题。首先来看一下它是一款线上监控诊断产品,嗯,然后能实时查看我们的一个内存 g c 一个以及线层的状态信息。好,来我们给大家演示一下是如何使用的。 这里我们有一个 supreme 不退的一个工程,这里,然后这里有一段代码,来,大家一起来看一下,这是我们的一个现成池,提交啊,提交任务在我们的一个 vr 处一直是一个死循环。好,我们来首先预计一下这个项目, 就是一个 a 加 b, 然后乘以十好已经爬起来了。然后我们可以看一下我们的一个 cpu, cpu 现在已经达到百分之百,我们怎么去定位这 一个问题啊?好,我们来看一下这里,我们在我们的一个地盘,我们已经下载好了 r s s 杠不疼。首先来看一下它的一个流程步骤,大概我这里给大家总结了有相应的这几步。首先下载我们 r s s 的一个价包, 这个 c r r 是我们的一个 h t p 命令,航航工具非常强的一个强大,然后再通过加油跟架启动它的一个架包。 然后我们来给大家实战演示一下,在这里我们的一个地盘下面已经下载好了,所以说就不用下载。然后我们直接输入加号框架, 好,现在已经启动,启动好了之后他会检测到有当前的一个进程,我们当前运行的这一个是第一号,我们所 说输入第一个这个进程 id, 它会去连接,就 artis process, 它会连接到当前的一个进程,然后我们输入 dashboard 辅助灯,大气 bod, 然后我们来观察一下它的一个线程执行情况,比如说当前的这个线程,可以看到它的 cpu 是九十三,它会一直一直都 好,然后我们 ctrl c 把它给停掉,停掉之后我们来查看当前的一个线程是二十五,然后输入线程 id, 线程二十五,听得到具体是哪一行,这是我们的一个三十八行,三十八行,然后我们通过 g、 a、 d 反编译一下当前的这一个,这一个代码。 好,三十八行可以看一下,他是在我们的一个死循环当中,属于说非常方便的,就定位到我们的一个问题, 对吧?好, ok。 然后觉得有用的可以帮忙点点赞,点点关注。然后需要这一个文档的话,可以进一下我们的一个粉丝群,好,谢谢大家。

cpu 到百分之百了,如何定位问题?像这个问题的话,前面的两三天吧,我记得啊,有位小伙伴呢,啊,刚问过我啊,他呢处理完之后又是百分之百,过了几天又百分之百,然后再处理完之后呢, 过了几天又百分之百。所以这个问题呢,定位呢?首先我们要有一个方法,你不能盲,不能盲目的去猜啊。首先第一个啊,他的规律啊,他有规律性啊,他可能过了几天才百分之百对吧,不是立马百分之百啊,可能就是程序啊,他的这个跑的这个时间周期,他有一定的规律的话,可能是定时器啊,可能触发某一个定时器呢, 去调用,或者间隔一个固定的时间去调用某一个这个县城啊。而这个县城呢,他 cpu 百分之百呢,他根本原因就是在于我们占有某一个资源,他不释放,所以导致 cpu 他一直就往上升啊。如果说这个资源只要 开启之后,用完之后释放之后呢, cpu 是不会上升的啊。所以这块呢,它的本质原因就是说有一个资源,它占用之后呢,它一直不释放 cpu, 所以导致我们的 cpu 的负载负荷就只会一直往上升。那么至于百分之百呢,也就是达到了这个极限了啊。我们可以去观察一段时间, 通过我们的这个包括 top 啊,还有我们那个时间命令啊,去找到导致 cpu 百分之百的进程是什么啊,比如说 g, s, p 对吧,或者这种定位到我们的嘉瓦的一个进程对吧。 找到这个进程之后呢,我们可以啊去定位到某一个县城啊,然后去把这个县城里面的一个对战信息啊,打印出来,这个时候呢,我们就可以看到他的执行的一个代码。找到代码之后呢,定位呢,我们再去分析具体的一个代码里面的一个原 原因啊。凝聚毕生数学给大家研制了一份 java 程序员的一个求职突击手册,包含简历模板、面试突击压题,一周的一个技术提升以及 java 提升的一个完整学习路线。领取方式呢?在我视频主页一册在手,保你高薪无忧。 不会也就是几个啊,第一个呢,可能就是我们某一个啊,程序呢,跑起来之后呢,他导致一个死循环啊,这也是可能造成 cpu 百分百的一个一个原因。 那这种情况呢,你只要排查一个,就是你的最近有没有发布项目啊,如果最近有发版,然后发版之后导致 cba 百分之百呢, 这个时候呢,多半原因就是因为你最近发版的这个 bug 啊,可能真的就是死循环造成的。他这个呢,你就去尝试着去回退一下,如果回退版本没有问题了,那就是 你本质升级导致的问题啊。但如果说最近没有发版,没有发版呢,可能过了一段时间之后才百分之百呢。这个时候你就要去看你的程序里面,看有没有拿个定时器去加入我们的代码啊, 如果是有一个定时器将用某一个代码导致的,这个时候呢,你就可以去把这个定时器的最终端的这个方法那找到之后去看他的 c 口啊,去看他的这个处理是不是啊没有释放一些资源。 如果说是这样的情况的话,这个时候我们就需要有一段时间那个监控,才能够去发现具体的问题,这个 cb 百分百呢,刚刚讲的这个只是说两种这样的一个情况哈,但是不代表所有的情况都是这样的一个其中的一个原因啊。所以这一块呢, 大家还是要去具体的问题呢啊,具体去分析哈。那么我这里呢给大家讲的是一个基本的一个排查思路 啊,就是通过这种方式呢,啊,去排查啊,先找到进程,再找到线程,然后再找到具体的一个这个报出的一个信息啊。然后呢这种定位的甲瓦代码,然后甲瓦代码呢,也要去分析,看是死循环还是定时器导致的这么一个啊。那么它的根本原因呢,就是因为 资源不释放,从而导致在 cpu 不断的往上升啊。

如果生产环境出现了 cpu 标高问题,如何定位解决?首先在这里呢为大家去介绍一个工具啊,那么这个工具呢是我们阿里的阿萨斯, 他呢是我们阿里开源的一个叫诊断工具,那么他相比于我们 gdk 内置的一些工具呢,他要更加的人性化,并且功能呢也更加强大,对于很多问题啊,他能够一键定位啊,然后呢也可以去反编译我们元代码,甚至他还能直接在生产环境去进行一个热修复。 同时呢我们在这边为大家去准备好了一段 cpu 标告了测试代码啊,关于这个问题的详细文字版,我已经整理了一份八十万字的专网面试大全笔记,放在视频的最后面,坚持看完一定对你有帮助。那么这段代码呢,他会不断的循环,那么每次呢都会生成两个随机数,并且去计算他的正弦和他的一个余弦,然后呢我们将结果和一相加, 并且我们会重复计算一百万次,然后再把我们的这个结果呢打印在控制台,这个呢它会额外的去消耗我们 cpu 的一个资源啊, 我们再回到我们这个界面,因为它的一个使用方式呢非常的简单啊,我们可以直接把我们这个价文阶段下载下来,然后呢就通过价格跟价去直接去进行启动就 ok 了。那么在这边呢我们首先去启动我们 cpu 标高了这个程序,然后呢我们再在命令行工具里面去打开我们的阿萨斯软件, 我们可以看到在这边呢实际上已经为我们显示出来了我们 cpu 标告这个测试类对不对? 我们可以通过我们的 here 和命令来去查看我们所有知识的一些命令列表啊,那么这里呢,主要会用到几个命令啊?比如说带切 both, three 的等等啊? 首先我们来通过我们 daisyboard 去查看一下它的一个整体情况,我们可以看到 daisyboard 命令呢,整体展现的进程里面所有的现成,包括我们的 cpu 信息,对吧?已经达到百分之九十九了,那么包括我们的内存信息啊,然后 又包括了我们七夕的一些情况,明显可以看到我们这个主线程是不是占用了非常高的一个 cpu 的使用率,对不对?好,然后呢,我们再去看一下我们最繁忙的线程,正在执行的线程站是什么?我们可以通过什么 three 的杠 n, 好,我们可以看到在这个位置我们的主线程,也就是我们这个慢线程,它占用的 cpu 使用率是百分之九十九点四六,对吧? 那么在第十四行的代码出现了问题,我们来看一下我们程序里面第十四行代码是不是我们去进货循环的这个位置啊?对吧?计算一百万次,那么我们就可以很明显的看出是因为我们主线上的第十四行代码导致的 cpu 标高的问题,对不对? 前面呢我们已经分析出来了, cpu 负载高是因为我们 cpu test 里面的一个不断计算对不对?那么我们通过 j a d 反边,我们来去看一下原码它长什么样子啊?方便我们进一步定位问题,我们可以通过什么 j a d, mini 来我们的 o r g 点北冥点 j v m 点 cpu test, 好,这里呢就是我们的一个原码啦,如果说我们想做一个线上的调试, 那么又不想在本地改代码,去打印日志,然后又提交到服务器再重启测试,这样很麻烦对不对?那么我们可以去结合阿萨斯的 gad, mc 还有我们的重载类来去动态的重新定我们的类。首先呢,我们通过我们的 gad 把我们的原代码文件下过来,然后呢我们去修改一下他的一个原代码啊,我们在后面, 当我们反编一出文件之后,我们在它的尾部我们增加一行,我叫做我是热带吗? 好。然后呢,我们再把这个点加号文件变音成我们点 class 文件,这里呢我们就可以通过 m c 命令,这样呢我们就把我们的点加号文件变音成我们点 class 文件, 我们可以看到这边的输出呢,已经是 ok 了。然后我们再通过我们重载类,我们通过这个命令来给他去做一个重载。好,我们看到这边呢已经重载成功了,那么我们再去看一下我们控制台的输出, 那么我们可以看到我们这边控制台是不是已经输出了我是热带码对不对?如果我们的生产环境出现了 c p u 标高问题,那么我们就可以通过阿萨斯来给我们去进行一个定位和解决。这一讲的内容呢,我们聊到这个地方就结束了,我是一锅炖不下的北冥,我们再会。

在日常开发过程中,服务器 cpu 占用过高,这个问题该怎么排查呢?这里的解决思路是这样的,首先定位到 cpu 占用过高的进程, 大家都理解进程是正在运行的程序或者代码。第二步呢,找到进程中使用 cpu 过高的线程,线程呢是进程中的执行单元,一个进程有多个线程。第三步呢,通过加入中的 jstek 命令打印出当前线程的快照,咱们用于发现问题。 最后呢,咱们的找到问题并解决问题,这里有一台服务器,咱们启动一个家伙服务,用于模拟线上的服务,这边已经启动完成了,咱们通过 top 命令 找到 cpu 使用过高的进程,这里可以看到这个 p i d 二零二九的,它的使用 cpu 已经达到百分之九十九点九,接近百分之一百呢。通过这项命令, 咱们找到二零二九这个进程当中使用 cpu 过高的线程,咱们可以看一下,这里咱们发现这个二零四九使用 cpu 百分之百说明这个线程使用 cpu 过高。操作系统中的线程 id 是十六进制的, 所以咱们需要将现成 id 这个二零四九转换成十六禁止,咱们通过这行命令将二零四九转换成十六禁止,可以看到二零四九转换的十六禁止是八零幺。最后通过加播中的 jst 命令打印现成快照, 这里的二零二九是咱们那个晋城 id, 这个八零幺是县城 id, 咱们来执行一下,看一下效果。通过县城快照,咱们可以看到 泰斯特 cpu 这个家务类的第十九行出现了问题,接下来呢,咱们看一下第十九行干了什么事情?这里呢可以看到第十九行他是一个死循环。这里呢咱们就发现了问题,最后一步呢,咱们发现这个问题,最后把这个问题解决掉就 ok 了。最后小伙伴们还有什么更好的办法吗?评论区讨论一下。

线上 cpu 标高问题排查阿尔萨斯版本,阿尔萨斯扎瓦诊断利器,是阿里的一款开源工具,接下来我们打开给他哈补,然后搜索阿尔萨斯,然后我们点进来, 在这里然后找到他的文档,我们执行这两个命令,第一个命令来进行下载,我们进到一个目录下执行这个命令, 在这里已经下下来了,然后我们来执行一下,它提示有两个程序,让我们选择监控哪一个,这里第一个是项目,第二个是 nahos, 然后我们选择第一个,我们输入一,然后回车, 在这里我们就已经启动成功二三四,然后监控的是我们的项目,输入十二的命 令,它这儿的列表显示的是 cpu 的占比以及其他的相关信息,在这里我们发现有百分之九十七的占比,然后我们输入第二个命令 server, 然后跟上一个 id 七六三,在这里他就会输出当前的线上的信息,那这里呢是开始 ctrl 十二号,这里就是死循环,通过死循环导致的 cpu 标高,然后这样呢我们就可以通过阿尔萨斯快速的定位 cpu 标高的问题,今天就讲到这,谢谢大家。

一分钟教会你如何排查线上 cpu 飙升问题,哦买噶,欢迎来到新一期的小欧说编程,今天来给大家分享一下如何排查线上 cpu 飙升的问题。首先我们为了模拟线上 cpu 飙升的问题,我们这里面写了一个呆萌, 这里面有一个死循环,当我们在调用这个接口的时候,这里面就会进行死循环,就会导致 cpu 飙升。我们先将这个加瓦程序打成一个架包,然后我们再将这个架包上传到咱们的服务器这里面,为了节约时间,我已经将打好的架包已经上传到了服务器,我们现在就要用加瓦点架来启动这个加瓦程序。 我们可以看到现在这个交换程序已经跑起来了,咱们现在可以调用看一下结果,这里面我们通过这个 c u i l 就能够验证服务有没有跑起来。这里面我们调了这个 hello 的 接口,刚刚我们在代码里面写了个 hello 接口,在调用这个接口的时候,他会返回一个 hello word, 我们现在来调用一下,这里面我们可以看到他已经返回了 hello word, 说明我们的程序已经跑起来了。那现在我们再去调用这个死循环的方法, 我们通过这个接口就能够触发这个死循环,现在来调用看一下结果, 现在这里面已经进入了死循环。我们来看一下线上的 cpu, 咱们用套孔命令就可以看到具体 cpu 飙升的进程, 我们这里面可以看到这里面有一个加我的进程,这里面的 cpu 占比非常高,我们这里面可以用 ps 的命令来定位具体造成 cpu 飙升的现成,这里面的这个参数就是我们的进程 id, 我们现在来执行一下,这里面我们可以看到具体造成 cpu 飙升 的进程是这个,这里面有个点需要注意,这个现场 id 是十进制的,我们需要把它转换成十六进制,我们这里面可以通过这个命令将咱们的十进制转换成十六进制,这个就是他的十六进制。 我们现在在使用 j star 这个命令来看具体的对战信息,我们再来看一下详细的对战信息,咱们通过这个这里面输入进程 id, 然后这里面过滤我们的现场 id, 再输出他下面二十行的对象信息, 这个就是我们的现场 id, 具体造成 cpu 飙升的对象信息在这一行。在我们的 test ctrl 第二十行代码, 我们可以在我们的代码里面看一下第二层代码,就是这个循环,像这样我们就定位到了 cpu 飙升的原因,现在你们弄懂如何排查 cpu 飙升的原因了吗?这个就是本期的分享视频,我们下期再见,真香,哎呀。