国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果显示如下:
排名前几的比较受重视的能力分别为:解决问题、编程语言熟练程度、Debug、系统设计和性能优化。
解决问题的能力以超高比例排名第一,这也是为什么很多面试过程中,面试官都喜欢问如下问题:1、你这个项目遇到的最大挑战是什么?如何解决的?
2、如果线上发生了报警你回如何排查呢?
3、你有解决过什么线上问题吗?
4、能列举几个你知道的排查Linux服务器线上问题的命令吗?
这些,都是比较常见的问题,还有一些比较具体的问题也是建议很多开发者都需要掌握的,如:1、线上服务器Load飙高如何排查?
2、线上服务器CPU占用率高如何排查?
3、线上服务器频繁发生Full GC如何排查?
4、线上服务器发生死锁如何排查?
这些问题的回答,一方面考察了面试者是否具有很强的实战经验,另外一方面也能体现出其解决问题的能力。
毋庸置疑,作为开发人员来说,定位并解决问题的能力是至关重要的。因为一旦线上发生了问题,如CPU占用率高,如果不及时解决,很容易导致网站响应慢、服务器宕机等问题。
那么,书归正传,本文我们就来简单介绍一下,如果线上服务器发生CPU占用率过高的问题时,应该如何排查并定位问题。一、问题发现
本文整理自一个真实的案例,是楼主负责的业务,在一次大促之前的压测时发现了这个问题。
在每次大促之前,我们的测试人员都会对网站进行压力测试,这个时候会查看服务的cpu、内存、load、rt、qps等指标。
在一次压测过程中,测试人员发现我们的某一个接口,在qps上升到500以后,CPU使用率急剧升高。CPU利用率,又称CPU使用率。顾名思义,CPU利用率是来描述CPU的使用情况的,表明了一段时间内CPU被占用的情况。使用率越高,说明你的机器在这个时间上运行了很多程序,反之

本文根据真实案例,介绍了当线上服务器CPU占用率过高时,如何通过`top`、`printf`和`jstack`命令进行问题排查和定位。通过分析,发现是Hibernate Validator初始化过程耗时导致,通过重构代码提前初始化Validator解决了问题。
最低0.47元/天 解锁文章
9286

被折叠的 条评论
为什么被折叠?



