成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:線上服務(wù)器CPU占用率高如何排查定位問(wèn)題?

系統(tǒng) Linux
本文我們就來(lái)簡(jiǎn)單介紹一下,如果線上服務(wù)器發(fā)生CPU占用率過(guò)高的問(wèn)題時(shí),應(yīng)該如何排查并定位問(wèn)題。

國(guó)外開(kāi)發(fā)者平臺(tái) HankerRank 發(fā)布的 2018 年開(kāi)發(fā)者技能調(diào)查報(bào)告中有一項(xiàng)關(guān)于"雇主最看重哪些核心能力"的調(diào)查,結(jié)果顯示如下: 

 

 

 

排名前幾的比較受重視的能力分別為:解決問(wèn)題、編程語(yǔ)言熟練程度、Debug、系統(tǒng)設(shè)計(jì)和性能優(yōu)化。

解決問(wèn)題的能力以超高比例排名第一,這也是為什么很多面試過(guò)程中,面試官都喜歡問(wèn)如下問(wèn)題:

  1. 你這個(gè)項(xiàng)目遇到的最大挑戰(zhàn)是什么?如何解決的?
  2. 如果線上發(fā)生了報(bào)警你回如何排查呢?
  3. 你有解決過(guò)什么線上問(wèn)題嗎?
  4. 能列舉幾個(gè)你知道的排查L(zhǎng)inux服務(wù)器線上問(wèn)題的命令嗎?

這些,都是比較常見(jiàn)的問(wèn)題,還有一些比較具體的問(wèn)題也是建議很多開(kāi)發(fā)者都需要掌握的,如:

  1. 線上服務(wù)器Load飆高如何排查?
  2. 線上服務(wù)器CPU占用率高如何排查?
  3. 線上服務(wù)器頻繁發(fā)生Full GC如何排查?
  4. 線上服務(wù)器發(fā)生死鎖如何排查?

這些問(wèn)題的回答,一方面考察了面試者是否具有很強(qiáng)的實(shí)戰(zhàn)經(jīng)驗(yàn),另外一方面也能體現(xiàn)出其解決問(wèn)題的能力。

毋庸置疑,作為開(kāi)發(fā)人員來(lái)說(shuō),定位并解決問(wèn)題的能力是至關(guān)重要的。因?yàn)橐坏┚€上發(fā)生了問(wèn)題,如CPU占用率高,如果不及時(shí)解決,很容易導(dǎo)致網(wǎng)站響應(yīng)慢、服務(wù)器宕機(jī)等問(wèn)題。

那么,書(shū)歸正傳,本文我們就來(lái)簡(jiǎn)單介紹一下,如果線上服務(wù)器發(fā)生CPU占用率過(guò)高的問(wèn)題時(shí),應(yīng)該如何排查并定位問(wèn)題。

1、問(wèn)題發(fā)現(xiàn)

本文整理自一個(gè)真實(shí)的案例,是樓主負(fù)責(zé)的業(yè)務(wù),在一次大促之前的壓測(cè)時(shí)發(fā)現(xiàn)了這個(gè)問(wèn)題。

在每次大促之前,我們的測(cè)試人員都會(huì)對(duì)網(wǎng)站進(jìn)行壓力測(cè)試,這個(gè)時(shí)候會(huì)查看服務(wù)的cpu、內(nèi)存、load、rt、qps等指標(biāo)。

在一次壓測(cè)過(guò)程中,測(cè)試人員發(fā)現(xiàn)我們的某一個(gè)接口,在qps上升到500以后,CPU使用率急劇升高。

CPU利用率,又稱CPU使用率。顧名思義,CPU利用率是來(lái)描述CPU的使用情況的,表明了一段時(shí)間內(nèi)CPU被占用的情況。使用率越高,說(shuō)明你的機(jī)器在這個(gè)時(shí)間上運(yùn)行了很多程序,反之較少。

2、問(wèn)題定位

遇到這種問(wèn)題,首先是登錄到服務(wù)器,看一下具體情況。

定位進(jìn)程

登錄服務(wù)器,執(zhí)行top命令,查看CPU占用情況:

 

  1. $top 
  2.    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 
  3.   1893 admin     20   0 7127m 2.6g  38m S 181.7 32.6  10:20.26 java 

top命令是Linux下常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類似于Windows的任務(wù)管理器。

通過(guò)以上命令,我們可以看到,進(jìn)程ID為1893的Java進(jìn)程的CPU占用率達(dá)到了181%,基本可以定位到是我們的Java應(yīng)用導(dǎo)致整個(gè)服務(wù)器的CPU占用率飆升。

定位線程

我們知道,Java是單進(jìn)程多線程的,那么,我們接下來(lái)看看PID=1893的這個(gè)Java進(jìn)程中的各個(gè)線程的CPU使用情況,同樣是用top命令:

 

  1. $top -Hp 1893 
  2.    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 
  3.   4519 admin     20   0 7127m 2.6g  38m R 18.6 32.6   0:40.11 java 

通過(guò)top -Hp 1893命令,我們可以發(fā)現(xiàn),當(dāng)前1893這個(gè)進(jìn)程中,ID為4519的線程占用CPU最高。

定位代碼

通過(guò)top命令,我們目前已經(jīng)定位到導(dǎo)致CPU使用率較高的具體線程, 那么我么接下來(lái)就定位下到底是哪一行代碼存在問(wèn)題。

首先,我們需要把4519這個(gè)線程轉(zhuǎn)成16進(jìn)制:

 

  1. $printf %x 4519 
  2. 11a7 

接下來(lái),通過(guò)jstack命令,查看棧信息:

  1. $sudo -u admin  jstack 1893 |grep -A 200 11a7 
  2. "HSFBizProcessor-DEFAULT-8-thread-5" #500 daemon prio=10 os_prio=0 tid=0x00007f632314a800 nid=0x11a2 runnable [0x000000005442a000] 
  3.    java.lang.Thread.State: RUNNABLE 
  4.   at sun.misc.URLClassPath$Loader.findResource(URLClassPath.java:684) 
  5.   at sun.misc.URLClassPath.findResource(URLClassPath.java:188) 
  6.   at java.net.URLClassLoader$2.run(URLClassLoader.java:569) 
  7.   at java.net.URLClassLoader$2.run(URLClassLoader.java:567) 
  8.   at java.security.AccessController.doPrivileged(Native Method) 
  9.   at java.net.URLClassLoader.findResource(URLClassLoader.java:566) 
  10.   at java.lang.ClassLoader.getResource(ClassLoader.java:1093) 
  11.   at java.net.URLClassLoader.getResourceAsStream(URLClassLoader.java:232) 
  12.   at org.hibernate.validator.internal.xml.ValidationXmlParser.getInputStreamForPath(ValidationXmlParser.java:248) 
  13.   at org.hibernate.validator.internal.xml.ValidationXmlParser.getValidationConfig(ValidationXmlParser.java:191) 
  14.   at org.hibernate.validator.internal.xml.ValidationXmlParser.parseValidationXml(ValidationXmlParser.java:65) 
  15.   at org.hibernate.validator.internal.engine.ConfigurationImpl.parseValidationXml(ConfigurationImpl.java:287) 
  16.   at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:174) 
  17.   at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111) 
  18.   at com.test.common.util.BeanValidator.validate(BeanValidator.java:30) 

通過(guò)以上代碼,我們可以清楚的看到,BeanValidator.java的第30行是有可能存在問(wèn)題的。

3、問(wèn)題解決

接下來(lái)就是通過(guò)查看代碼來(lái)解決問(wèn)題了,我們發(fā)現(xiàn),我們自定義了一個(gè)BeanValidator,封裝了Hibernate的Validator,然后在validate方法中,通過(guò)Validation.buildDefaultValidatorFactory().getValidator()初始化一個(gè)Validator實(shí)例,通過(guò)分析發(fā)現(xiàn)這個(gè)實(shí)例化的過(guò)程比較耗時(shí)。

我們重構(gòu)了一下代碼,把Validator實(shí)例的初始化提到方法外,在類初始化的時(shí)候創(chuàng)建一次就解決了問(wèn)題。

4、總結(jié)

以上,展示了一次比較完成的線上問(wèn)題定位過(guò)程。主要用到的命令有:top 、printf 和 jstack

另外,線上問(wèn)題排查還可以使用Alibaba開(kāi)源的工具Arthas進(jìn)行排查,以上問(wèn)題,可以使用一下命令定位:

  1. thread -n 3 //查看cpu占比前三的線程 

以上,本文介紹了如何排查線上服務(wù)器CPU使用率過(guò)高的問(wèn)題,如果大家感興趣,后面可以再介紹一些關(guān)于LOAD飆高、頻繁GC等問(wèn)題的排查手段。 

 

責(zé)任編輯:龐桂玉 來(lái)源: Hollis
相關(guān)推薦

2019-07-16 06:43:18

LinuxCPU占用率

2024-10-21 00:00:01

Linux服務(wù)器CPU

2023-02-16 08:10:40

死鎖線程

2018-08-10 15:00:42

服務(wù)器內(nèi)存排查

2009-08-13 17:53:59

控制CPU占用率

2016-09-21 12:26:47

Windows 10CPU禁用

2022-10-10 12:31:37

服務(wù)器性能

2019-09-17 13:00:54

Windows 10微軟CPU

2021-02-26 13:35:46

JavaCPU內(nèi)存

2023-03-06 08:41:32

CPU使用率排查

2010-02-24 08:09:09

Windows 7內(nèi)存占用

2019-07-31 07:26:16

Linux服務(wù)器CPU

2022-10-10 09:10:07

命令磁盤(pán)排查

2019-04-29 14:23:46

Java服務(wù)器CPU

2017-08-19 23:21:14

線上CPU定位

2024-02-28 10:14:47

Redis數(shù)據(jù)硬盤(pán)

2024-09-18 09:02:14

單核服務(wù)器線程切換

2019-03-07 09:25:59

LinuxCPU交換分區(qū)

2020-12-20 10:37:06

Windows10操作系統(tǒng)CPU

2024-07-23 08:21:19

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一区二区三区亚洲 | 免费看日韩视频 | 午夜免费电影 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 日本一区精品 | 亚洲男人网 | 日韩中文字幕在线视频观看 | h视频亚洲 | 日韩欧美在线不卡 | 成人在线一区二区三区 | 欧美精品1区2区3区 精品国产欧美一区二区 | 中文在线一区二区 | 91视频正在播放 | 久久久久久99 | 久久久久久久久中文字幕 | 成人久久久 | 男人的天堂一级片 | 国产日产精品一区二区三区四区 | 精品久久一区 | 色噜噜狠狠色综合中国 | 久久久久免费 | 成人精品鲁一区一区二区 | 精品久久一区 | 自拍偷拍第1页 | 一级做a爰片性色毛片16 | 久久伊人精品 | 亚洲成av| 亚洲综合无码一区二区 | 日韩高清一区二区 | 日韩国产欧美视频 | 亚洲精品乱码久久久久久蜜桃 | 国产在线观看一区二区 | 欧美日韩在线免费 | 欧产日产国产精品国产 | 91精品国产综合久久久动漫日韩 | 中文字幕视频在线 | 精品视频一区二区三区在线观看 | 91午夜在线 | 国产中文视频 | 成人精品鲁一区一区二区 | 亚洲精品电影在线观看 |