精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

網易二面:CPU狂飆900%,該怎么處理?

數據庫 其他數據庫
并發量大并且大量SQL性能低的情況下,比如字段是沒有建立索引,則會導致快速CPU飆升,如果還開啟了慢日志記錄,會導致性能更加惡化。生產上有MYSQL 飆升900% 的惡劣情況。

說在前面

社群一位小伙伴面試了 網易,遇到了一個 性能類的面試題:

CPU飆升900%,該怎么處理?

可惜的是,以上的問題,這個小伙沒有回答理想。

最終,導致他網易之路,終止在二面,非??上?/strong>

現在把這個 題目,以及參考答案,收入咱們的

《Java面試寶典 PDF》,供后面的小伙伴參考,前車之鑒啊

首先,說明一下問題:CPU飆升200% 以上是生產容易發生的場景

注:本文以 PDF 持續更新,最新Java 架構筆記、面試題 的PDF文件,請后臺私信【筆記】獲取哦

場景:1:MySQL進程飆升900%

大家在使用MySQL過程,想必都有遇到過CPU突然過高,或者達到200%以上的情況。

數據庫執行查詢或數據修改操作時,系統需要消耗大量的CPU資源維護從存儲系統、內存數據中的一致性。

并發量大并且大量SQL性能低的情況下,比如字段是沒有建立索引,則會導致快速CPU飆升,如果還開啟了慢日志記錄,會導致性能更加惡化。生產上有MYSQL 飆升900% 的惡劣情況。

場景2:Java進程飆升900%

一般來說Java 進程不做大量 CPU 運算,正常情況下,CPU 應該在 100~200% 之間,

但是,一旦高并發場景,要么走到了死循環,要么就是在做大量的 GC, 容易出現這種 CPU 飆升的情況,CPU飆升900%,是完全有可能的。

其他場景:其他的類似進程飆升900%的場景

比如Redis、Nginx等等。

尼恩提示:大家介紹場景的時候,就說自己主要涉及了兩個場景, Java進程飆升900%、MySQL進程飆升900%兩種場景,其實,這兩個場景就足夠講半天了, 其他的,使用規避技巧規避一下就行。

場景一:MySQL進程CPU飆升到900%,怎么處理?

定位過程:

  • 使用top 命令觀察,確定是mysqld導致還是其他原因。
  • 如果是mysqld導致的,show processlist,查看session情況,確定是不是有消耗資源的sql在運行。
  • 找出消耗高的 sql,看看執行計劃是否準確, index 是否缺失,或者實在是數據量太大造成。

處理過程:

  • kill 掉這些線程(同時觀察 cpu 使用率是否下降), 一般來說,肯定要 kill 掉這些線程(同時觀察 cpu 使用率是否下降),等進行相應的調整(比如說加索引、改 sql、改內存參數)之后,再重新跑這些 SQL。
  • 進行相應的調整(比如說加索引、改 sql、改內存參數)
    index 是否缺失,如果是,則 建立索引。也有可能是每個 sql 消耗資源并不多,但是突然之間,有大量的 session 連進來導致 cpu 飆升,這種情況就需要跟應用一起來分析為何連接數會激增,再做出相應的調整,比如說限制連接數等
  • 優化的過程,往往不是一步完成的,而是一步一步,執行一項優化措辭,再觀察,再優化。

場景1的真實案例:MySQL數據庫優化的真實案例

尼恩提示:以下案例,來自互聯網。大家參考一下,準備一個自己的案例。

本問題親身經歷過。

之前開發同事編寫的SQL語句,就導致過線上CPU過高,MySQL的CPU使用率達到900%+,通過優化最后降低到70%~80%。下面說說個人在這個過程中的排查思路。

首先,我們要對問題定位而不是盲目的開啟什么 慢日志,在并發量大并且大量SQL性能低的情況下,開啟慢日志無意是將MySQL推向崩潰的邊緣。

當時遇到這個情況,分析了當前的數據量、索引情況、緩存使用情況。目測數據量不大,也就幾百萬條而已。接下來就去定位索引、緩存問題。

  1. 經過詢問,發現很多查詢都是走MySQL,沒有用到緩存。
  2. 既然沒有用到緩存,則是大量請求全部查詢MySQL導致。通過下面的命令查看:
show processlist;

發現類似很多相同的SQL語句,一直處于query狀態中。

select id form user where user_code = 'xxxxx';

初步分析可能是 user_code 字段沒有索引導致。接著查詢user表的索引情況:

show index form user;

發現這個字段是沒有建立索引。增加索引之后,該條SQL查詢能夠正常執行。

3、沒隔一會,又發生大量的請求超時問題。接著進行分析,發現是開啟了 慢日志查詢。大量的SQL查詢語句超過慢日志設置的閥值,于是將慢日志關閉之后,速度瞬間提升。CPU的使用率基本保持在300%左右。但還不是理想狀態。

4、緊接著將部分實時查詢數據的SQL語句,都通過緩存(redis)讀寫實現。觀察一段時間后,基本維持在了70%~80%。

總結:其實本次事故的解決很簡單,就是添加索引與緩存結合使用。

  1. 不推薦在這種CPU使用過高的情況下進行慢日志的開啟。因為大量的請求,如果真是慢日志問題會發生日志磁盤寫入,性能賊低。
  2. 直接通過MySQL show processlist命令查看,基本能清晰的定位出部分查詢問題嚴重的SQL語句,在針對該SQL語句進行分析。一般可能就是索引、鎖、查詢大量字段、大表等問題導致。
  3. 再則一定要使用緩存系統,降低對MySQL的查詢頻次。
  4. 對于內存調優,也是一種解決方案。

場景2展開:Java進程CPU飆升到900%,怎么處理?

定位過程:

CPU飆升問題定位的一般步驟是:

  1. 首先通過top指令查看當前占用CPU較高的進程PID;
  2. 查看當前進程消耗資源的線程PID:top -Hp PID
  3. 通過print命令將線程PID轉為16進制,根據該16進制值去打印的堆棧日志內查詢,查看該線程所駐留的方法位置。
  4. 通過jstack命令,查看棧信息,定位到線程對應的具體代碼。
  5. 分析代碼解決問題。

處理過程:

  1. 如果是空循環,或者空自旋。
  2. 處理方式:可以使用Thread.sleep或者加鎖,讓線程適當的阻塞。
  3. 在循環的代碼邏輯中,創建大量的新對象導致頻繁GC。比如,從mysql查出了大量的數據,比如100W以上等等。
  4. 處理方式:可以減少對象的創建數量,或者,可以考慮使用 對象池。
  5. 其他的一些造成CPU飆升的場景,比如 selector空輪訓導致CPU飆升 。
  6. 處理方式:參考Netty源碼,無效的事件查詢到了一定的次數,進行 selector 重建。

Java的CPU 飆升700%優化的真實案例

尼恩提示:以下案例,來自互聯網。大家參考一下,準備一個自己的案例。

最近負責的一個項目上線,運行一段時間后發現對應的進程竟然占用了700%的CPU,導致公司的物理服務器都不堪重負,頻繁宕機。

那么,針對這類java進程CPU飆升的問題,我們一般要怎么去定位解決呢?、

采用top命令定位進程

登錄服務器,執行top命令,查看CPU占用情況,找到進程的pid

top

很容易發現,PID為29706的java進程的CPU飆升到700%多,且一直降不下來,很顯然出現了問題。

使用top -Hp命令定位線程

使用 top -Hp <pid> 命令(為Java進程的id號)查看該Java進程內所有線程的資源占用情況(按shft+p按照cpu占用進行排序,按shift+m按照內存占用進行排序)

此處按照cpu排序:

top -Hp 23602

很容易發現,多個線程的CPU占用達到了90%多。我們挑選線程號為30309的線程繼續分析。

使用jstack命令定位代碼

1.線程號轉換5為16進制

printf “%x\n” 命令(tid指線程的id號)將以上10進制的線程號轉換為16進制:

printf "%x\n"  30309

轉換后的結果分別為7665,由于導出的線程快照中線程的nid是16進制的,而16進制以0x開頭,所以對應的16進制的線程號nid為0x7665

2.采用jstack命令導出線程快照

通過使用dk自帶命令jstack獲取該java進程的線程快照并輸入到文件中:

jstack -l 進程ID > ./jstack_result.txt

命令(為Java進程的id號)來獲取線程快照結果并輸入到指定文件。

jstack -l 29706 > ./jstack_result.txt

3.根據線程號定位具體代碼

在jstack_result.txt 文件中根據線程好nid搜索對應的線程描述

cat jstack_result.txt |grep -A 100  7665

根據搜索結果,判斷應該是ImageConverter.run()方法中的代碼出現問題

當然,這里也可以直接采用

jstack <pid> |grep -A 200 <nid>

來定位具體代碼

$jstack 44529 |grep -A 200 ae24
"System Clock" #28 daemon prio=5 os_prio=0 tid=0x00007efc19e8e800 nid=0xae24 waiting on condition [0x00007efbe0d91000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at java.lang.Thread.sleep(Thread.java:340)
at java.util.concurrentC.TimeUnit.sleep(TimeUnit.java:386)
at com.*.order.Controller.OrderController.detail(OrderController.java:37) //業務代碼阻塞點

分析代碼解決問題

下面是ImageConverter.run()方法中的部分核心代碼。

邏輯說明:

/存儲minicap的socket連接返回的數據   (改用消息隊列存儲讀到的流數據) ,設置阻塞隊列長度,防止出現內存溢出
//全局變量
private BlockingQueue<byte[]> dataQueue = new LinkedBlockingQueue<byte[]>(100000);
//消費線程
@Override
public void run() {
//long start = System.currentTimeMillis();
while (isRunning) {
//分析這里從LinkedBlockingQueue
if (dataQueue.isEmpty()) {
continue;
}
byte[] buffer = device.getMinicap().dataQueue.poll();
int len = buffer.length;
}

在while循環中,不斷讀取堵塞隊列dataQueue中的數據,如果數據為空,則執行continue進行下一次循環。

如果不為空,則通過poll()方法讀取數據,做相關邏輯處理。

初看這段代碼好像每什么問題,但是如果dataQueue對象長期為空的話,這里就會一直空循環,導致CPU飆升。

那么如果解決呢?

分析LinkedBlockingQueue阻塞隊列的API發現:

//取出隊列中的頭部元素,如果隊列為空則調用此方法的線程被阻塞等待,直到有元素能被取出,如果等待過程被中斷則拋出InterruptedException
E take() throws InterruptedException;
//取出隊列中的頭部元素,如果隊列為空返回null
E poll();

這兩種取值的API,顯然take方法更時候這里的場景。

代碼修改為:

while (isRunning) {
/* if (device.getMinicap().dataQueue.isEmpty()) {
continue;
}*/
byte[] buffer = new byte[0];
try {
buffer = device.getMinicap().dataQueue.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
……
}

重啟項目后,測試發現項目運行穩定,對應項目進程的CPU消耗占比不到10%。


責任編輯:武曉燕 來源: 今日頭條
相關推薦

2024-08-20 09:42:38

2025-10-09 02:00:00

CPUMySQLJava

2025-03-31 08:04:50

MySQLCPU內存

2024-10-21 00:00:01

Linux服務器CPU

2022-06-02 10:54:16

BrokerRocketMQ

2019-11-25 13:44:02

人臉識別AI人工智能

2025-03-26 00:44:00

ManagerMVC架構

2023-03-05 22:30:25

JavaCPU

2021-01-27 05:46:56

CPU占用率命令

2021-01-28 09:28:47

CPU Linux安全

2024-05-27 11:35:40

2017-11-23 10:47:47

2022-04-15 11:26:14

緩存功能

2024-05-24 10:15:36

2022-09-16 08:16:25

策略模式算法

2018-10-23 10:28:01

服務器流量高并發

2015-07-22 17:30:14

應用交付 太一星晨

2018-06-07 22:10:42

阿里云ET農業大腦

2025-05-28 03:11:00

token鑒權session

2023-03-20 00:00:00

點贊
收藏

51CTO技術棧公眾號

亚洲成人精品视频| 天天色天天爱天天射综合| 国产精品日韩在线| 久久久久久久久久网站| 麻豆精品99| 欧美性色综合网| 欧洲美女和动交zoz0z| 天堂网在线播放| 蜜臀av亚洲一区中文字幕| 欧美精品日韩三级| 天堂久久精品忘忧草| 国产成人久久精品一区二区三区| 亚洲成人自拍网| 亚洲精品视频一二三| 蜜桃av噜噜一区二区三区麻豆| 午夜在线播放视频欧美| 毛片精品免费在线观看| 中文字幕在线观看的网站| 成人激情久久| 一本一道综合狠狠老| 美女av免费观看| aaa日本高清在线播放免费观看| 国产麻豆视频一区| 国产精品18久久久久久首页狼| 欧美成人片在线观看| 国产精品午夜一区二区三区| 精品日韩av一区二区| 性欧美极品xxxx欧美一区二区| h片在线观看视频免费| 中文字幕一区二区三区四区| 欧美久久电影| 懂色av蜜臀av粉嫩av分享吧 | 国内自拍视频一区| 91福利区在线观看| 一区二区三区欧美日| 亚洲欧洲在线一区| 黄上黄在线观看| 26uuu另类欧美| 国产精品日韩一区二区免费视频| 国产精品玖玖玖| 免费人成在线不卡| 国产成人午夜视频网址| 亚洲日本韩国在线| 亚洲二区免费| 欧美激情一区二区久久久| 2021亚洲天堂| 一区二区中文字| xxx欧美精品| 在线免费看视频| 欧美偷拍自拍| 中文字幕视频在线免费欧美日韩综合在线看| 西西大胆午夜视频| 日本精品影院| 亚洲九九九在线观看| 亚洲国产欧美视频| 女人丝袜激情亚洲| 国产午夜精品美女视频明星a级| 国产精品无码网站| 欧美男人操女人视频| 日韩精品一区二区视频| 大地资源二中文在线影视观看 | 国产一级大片在线观看| 欧美永久精品| 欧美日韩国产成人高清视频| 日韩影院一区二区| 国一区二区在线观看| 欧美日韩aaaa| 午夜毛片在线观看| 日韩在线一二三区| 国产日韩精品电影| 99在线观看精品视频| 成人在线视频一区二区| 精品无人区一区二区三区| 亚洲色图另类小说| 欧美极品aⅴ影院| 中国老女人av| 欧美人与动牲性行为| 午夜不卡av在线| 亚洲 欧美 日韩系列| 亚洲三级在线| 亚洲精品成人网| 久久久久久国产免费a片| 久久婷婷蜜乳一本欲蜜臀| 久久最新资源网| 国产福利久久久| 亚洲欧美成人| 国产主播在线一区| 国产综合在线播放| 国产三级欧美三级日产三级99| 亚洲色图自拍| 国产三级伦理在线| 色婷婷久久99综合精品jk白丝| 永久免费的av网站| 在线播放一区二区精品视频| 亚洲人成网站在线播| 中文字幕无码日韩专区免费| 亚洲黄色毛片| 国产日韩精品在线播放| 日本高清视频www| 中文字幕在线视频一区| 黄色大片在线免费看| 欧美成人三级| 亚洲黄色在线看| 小嫩苞一区二区三区| 亚洲欧洲视频| 亚洲mm色国产网站| 日韩av免费观影| 亚洲最快最全在线视频| www.天天射.com| 国内精品免费| 久久精品国产清自在天天线| 中国一级免费毛片| 国产成人av自拍| 亚洲午夜久久久影院伊人| caoporn-草棚在线视频最| 欧美怡红院视频| 一起草在线视频| 国产精品扒开腿做爽爽爽软件| 国产成人精品免费视频| 色窝窝无码一区二区三区成人网站| 国产精品美女一区二区三区| 精品国产免费av| eeuss鲁片一区二区三区| 日韩中文字幕网址| 天堂网一区二区| 99re热这里只有精品视频| 亚洲av综合色区| 日韩黄色三级| 深夜福利国产精品| 人妻中文字幕一区二区三区| 91色在线porny| 人妻夜夜添夜夜无码av| 日韩在线网址| 久久影院模特热| 国产口爆吞精一区二区| 国产精品天美传媒沈樵| 手机在线免费观看毛片| 国产欧美日韩精品一区二区三区 | 粉嫩绯色av一区二区在线观看 | 看黄网站在线观看| 欧美日韩中文精品| 最近中文字幕在线mv视频在线 | 国产精品老女人精品视频| 午夜福利视频一区二区| 亚洲国产毛片aaaaa无费看| 人妻换人妻仑乱| 亚洲精品888| 亚洲永久在线观看| 成人在线免费看黄| 日韩欧美精品三级| 久久国产精品波多野结衣| 粉嫩久久99精品久久久久久夜| av久久久久久| 国产精品nxnn| 78色国产精品| 精品欧美不卡一区二区在线观看| 欧美日韩亚洲国产一区| 91精彩刺激对白露脸偷拍| 噜噜噜91成人网| 亚洲第一在线综合在线| 欧洲亚洲精品| 九九精品视频在线观看| 精品久久久久成人码免费动漫| 夜夜嗨av一区二区三区中文字幕| 四虎精品一区二区| 一区二区三区成人精品| 欧美一区二区在线| 黄色成人在线观看网站| 亚洲一区二区福利| 国产男男gay体育生网站| 亚洲综合av网| 9.1成人看片| 美女免费视频一区| 国产 欧美 日本| 久久久久观看| 国产精品视频一区二区高潮| 八戒八戒神马在线电影| 亚洲国产精品久久久久秋霞不卡| 青草视频在线观看免费| 国产精品美女一区二区| 久久久久亚洲AV成人网人人小说| 国产精品一页| 中国 免费 av| 亚洲区小说区| 91在线直播亚洲| 免费成人在线电影| 久久精品视频导航| 少妇人妻偷人精品一区二区| 欧美综合一区二区| 久操免费在线视频| 中文子幕无线码一区tr| 免费看91视频| 日本人妖一区二区| a级免费在线观看| 香蕉久久久久久久| 久久伊人精品天天| 国产1区在线观看| 色婷婷av一区二区三区大白胸| 女人十八毛片嫩草av| 国产69精品久久777的优势| 国产熟女高潮视频| 欧美日韩综合| 亚洲v国产v在线观看| 国产精品流白浆在线观看| 国产精品爱啪在线线免费观看| 中文字幕有码在线观看| 国产亚洲一区二区在线| 成人免费公开视频| 欧美区在线观看| youjizz在线视频| 樱桃视频在线观看一区| av电影在线不卡| 成人av电影免费观看| 日韩在线一区视频| 日日骚欧美日韩| 青青草成人免费在线视频| 天天射天天综合网| 日韩精品一区二区三区色偷偷 | 99综合精品| 国产在线无码精品| 久久高清免费| 日韩av一区二区三区美女毛片| 国产精品毛片视频| 亚洲在线第一页| 91视频亚洲| 国产日韩欧美一二三区| 国产另类xxxxhd高清| 555www成人网| 日本在线影院| 2020国产精品视频| 免费看男女www网站入口在线| 久久97久久97精品免视看 | 欧美精品一区二区三区精品| 久久久一本精品99久久精品66| 日韩欧美中文字幕一区二区三区 | www.日本xxxx| 亚洲在线观看| 日本wwww视频| 亚洲专区欧美专区| 日韩欧美在线播放视频| 亚洲一区图片| 日韩精品免费播放| 日韩黄色在线观看| 一区二区成人网| 久久精品国产999大香线蕉| 中文字幕12页| 国产精品一区二区在线观看网站| 久久久久xxxx| 国产电影精品久久禁18| 95视频在线观看| 99这里只有精品| 欧美一区二区三区成人精品| 2017欧美狠狠色| 蜜乳av中文字幕| 中国av一区二区三区| 日本伦理一区二区三区| 国产精品久久久久久久久搜平片| 99久久久无码国产精品不卡| 亚洲视频免费看| 久草资源在线视频| 黑人与娇小精品av专区| 国产午夜精品久久久久| 欧美亚洲一区二区在线| 136福利视频导航| 欧美一区二区在线视频| 亚洲AV无码成人片在线观看| 精品三级在线看| 蜜芽tv福利在线视频| 色爱精品视频一区| 五月香视频在线观看| 欧美精品免费在线观看| 欧美调教sm| 国产精品视频男人的天堂| 欧美日韩黄网站| 精品伦精品一区二区三区视频| 欧美人妖在线| 日本福利视频导航| 亚洲一级电影| 色一情一乱一伦一区二区三区日本| 美女视频一区在线观看| 成人啪啪18免费游戏链接| 久久天堂av综合合色蜜桃网| 91香蕉视频污在线观看| 午夜久久久久久电影| 中文字幕精品在线观看| 精品国产乱码久久久久久浪潮 | www.日韩不卡电影av| 牛牛电影国产一区二区| 国产精品精品久久久| 国内精品视频| 欧美精品一区在线| 欧美 日韩 国产 一区| 农村妇女精品一二区| 国模一区二区三区白浆| 久久午夜夜伦鲁鲁片| 最新欧美精品一区二区三区| 精品成人久久久| 在线播放日韩导航| 日本福利午夜视频在线| 久久69精品久久久久久久电影好| 姬川优奈av一区二区在线电影| 99re在线观看| 久久视频在线| 青青草原av在线播放| 国产成人精品免费在线| 天美传媒免费在线观看| 狠狠操狠狠色综合网| 99久久99久久久精品棕色圆| 亚洲日本aⅴ片在线观看香蕉| 欧美高清另类hdvideosexjaⅴ| 国产精品久久久久久久7电影| 女人抽搐喷水高潮国产精品| 日韩视频在线观看视频| 日本午夜一区二区| 国产三级视频网站| 亚洲高清免费观看| jlzzjlzzjlzz亚洲人| 日韩最新在线视频| 免费观看成人性生生活片 | 午夜在线视频播放| 热久久免费国产视频| 成人另类视频| 2022中文字幕| 黄色精品一二区| 永久av免费网站| 日本丶国产丶欧美色综合| 亚洲欧美日韩动漫| 国内久久久精品| 东京久久高清| 人人妻人人澡人人爽欧美一区双| 麻豆精品在线看| 日韩福利在线视频| 在线欧美日韩国产| 精品资源在线看| 国产精品xxx视频| 菠萝蜜一区二区| 无码人妻精品一区二区三区66| 久久色.com| 成人毛片在线播放| 亚洲国产精品悠悠久久琪琪| xxxx成人| 精品国产日本| 性色av一区二区怡红| a毛片毛片av永久免费| 欧美色图在线视频| 精品视频三区| 国产精品一区二区久久精品| 欧美日韩中文一区二区| 爱情岛论坛成人| 中文字幕av一区二区三区免费看| 成人黄色三级视频| 综合激情国产一区| 91视频成人| 免费视频爱爱太爽了| 99re在线视频这里只有精品| 亚洲天堂一区在线| 一区二区三区四区在线观看视频| 99欧美精品| 400部精品国偷自产在线观看 | 99热在线精品观看| 欧美高清性xxxx| 欧美日韩一区 二区 三区 久久精品| 99se视频在线观看| 91国产在线播放| 99国产精品久久久久久久成人热| 野花社区视频在线观看| 欧美色电影在线| 在线观看a级片| 国产精品毛片va一区二区三区| 亚洲影院在线| 欧美a级片免费看| 日韩欧美国产一区二区三区| 男人天堂视频在线观看| 欧美日韩在线一二三| 精品一区二区三区免费毛片爱| 破处女黄色一级片| 亚洲精品720p| 91久久久久久白丝白浆欲热蜜臀| 亚洲最新免费视频| 成人国产在线观看| 国产在线观看第一页| 欧美日韩国产成人在线观看| 国产一区二区三区电影在线观看| 17c国产在线| 韩曰欧美视频免费观看| 免费av在线网址| 精品欧美国产| 激情深爱一区二区| 日韩熟女精品一区二区三区| 中文字幕不卡av| 日韩精品a在线观看91| 中文字幕日韩综合| 欧美性开放视频| 污污网站在线看| 日韩欧美一区二区在线观看| 国产精品系列在线播放| 亚洲中文字幕无码爆乳av | 日本一级黄色大片| 日韩在线观看免费| 综合国产视频|