国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一次生產(chǎn) CPU 100% 排查優(yōu)化實(shí)踐

商務(wù)辦公 系統(tǒng)運(yùn)維
到了年底果然都不太平,最近又收到了運(yùn)維報警:表示有些服務(wù)器負(fù)載非常高,讓我們定位問題。還真是想什么來什么,前些天還故意把某些服務(wù)器的負(fù)載提高(沒錯,老板讓我寫個 BUG!),不過還好是不同的環(huán)境互相沒有影響。

[[255986]]

前言

到了年底果然都不太平,最近又收到了運(yùn)維報警:表示有些服務(wù)器負(fù)載非常高,讓我們定位問題。

還真是想什么來什么,前些天還故意把某些服務(wù)器的負(fù)載提高(沒錯,老板讓我寫個 BUG!),不過還好是不同的環(huán)境互相沒有影響。

定位問題

拿到問題后首先去服務(wù)器上看了看,發(fā)現(xiàn)運(yùn)行的只有我們的 Java 應(yīng)用。于是先用 ps 命令拿到了應(yīng)用的 PID。

接著使用 ps-Hppid 將這個進(jìn)程的線程顯示出來。輸入大寫的 P 可以將線程按照 CPU 使用比例排序,于是得到以下結(jié)果。

果然某些線程的 CPU 使用率非常高。

為了方便定位問題我立馬使用 jstack pid>pid.log 將線程棧 dump 到日志文件中。

我在上面 100% 的線程中隨機(jī)選了一個 pid=194283 轉(zhuǎn)換為 16 進(jìn)制(2f6eb)后在線程快照中查詢:

因?yàn)榫€程快照中線程 ID 都是16進(jìn)制存放。

發(fā)現(xiàn)這是 Disruptor 的一個堆棧,前段時間正好解決過一個由于 Disruptor 隊(duì)列引起的一次 OOM:強(qiáng)如 Disruptor 也發(fā)生內(nèi)存溢出?

沒想到又來一出。

為了更加直觀的查看線程的狀態(tài)信息,我將快照信息上傳到專門分析的平臺上。

http://fastthread.io/

其中有一項(xiàng)菜單展示了所有消耗 CPU 的線程,我仔細(xì)看了下發(fā)現(xiàn)幾乎都是和上面的堆棧一樣。

也就是說都是 Disruptor 隊(duì)列的堆棧,同時都在執(zhí)行 java.lang.Thread.yield 函數(shù)。

眾所周知 yield 函數(shù)會讓當(dāng)前線程讓出 CPU 資源,再讓其他線程來競爭。

根據(jù)剛才的線程快照發(fā)現(xiàn)處于 RUNNABLE 狀態(tài)并且都在執(zhí)行 yield 函數(shù)的線程大概有 30幾個。

因此初步判斷為大量線程執(zhí)行 yield 函數(shù)之后互相競爭導(dǎo)致 CPU 使用率增高,而通過對堆棧發(fā)現(xiàn)是和使用 Disruptor 有關(guān)。

解決問題

而后我查看了代碼,發(fā)現(xiàn)是根據(jù)每一個業(yè)務(wù)場景在內(nèi)部都會使用 2 個 Disruptor 隊(duì)列來解耦。

假設(shè)現(xiàn)在有 7 個業(yè)務(wù)類型,那就等于是創(chuàng)建 2*7=14 個 Disruptor 隊(duì)列,同時每個隊(duì)列有一個消費(fèi)者,也就是總共有 14 個消費(fèi)者(生產(chǎn)環(huán)境更多)。

同時發(fā)現(xiàn)配置的消費(fèi)等待策略為 YieldingWaitStrategy 這種等待策略確實(shí)會執(zhí)行 yield 來讓出 CPU。

代碼如下:

初步看來和這個等待策略有很大的關(guān)系。

本地模擬

為了驗(yàn)證,我在本地創(chuàng)建了 15 個 Disruptor 隊(duì)列同時結(jié)合監(jiān)控觀察 CPU 的使用情況。

創(chuàng)建了 15 個 Disruptor 隊(duì)列,同時每個隊(duì)列都用線程池來往 Disruptor隊(duì)列 里面發(fā)送 100W 條數(shù)據(jù)。

消費(fèi)程序僅僅只是打印一下。

跑了一段時間發(fā)現(xiàn) CPU 使用率確實(shí)很高。

同時 dump 線程發(fā)現(xiàn)和生產(chǎn)的現(xiàn)象也是一致的:消費(fèi)線程都處于 RUNNABLE 狀態(tài),同時都在執(zhí)行 yield。

通過查詢 Disruptor 官方文檔發(fā)現(xiàn):

YieldingWaitStrategy 是一種充分壓榨 CPU 的策略,使用 自旋+yield的方式來提高性能。 當(dāng)消費(fèi)線程(Event Handler threads)的數(shù)量小于 CPU 核心數(shù)時推薦使用該策略。

同時查閱到其他的等待策略 BlockingWaitStrategy (也是默認(rèn)的策略),它使用的是鎖的機(jī)制,對 CPU 的使用率不高。

于是在和之前同樣的條件下將等待策略換為 BlockingWaitStrategy。

和剛才的 CPU 對比會發(fā)現(xiàn)到后面使用率的會有明顯的降低;同時 dump 線程后會發(fā)現(xiàn)大部分線程都處于 waiting 狀態(tài)。

優(yōu)化解決

看樣子將等待策略換為 BlockingWaitStrategy 可以減緩 CPU 的使用,

但留意到官方對 YieldingWaitStrategy 的描述里談道: 當(dāng)消費(fèi)線程(Event Handler threads)的數(shù)量小于 CPU 核心數(shù)時推薦使用該策略。

而現(xiàn)有的使用場景很明顯消費(fèi)線程數(shù)已經(jīng)大大的超過了核心 CPU 數(shù)了,因?yàn)槲业氖褂梅绞绞且粋€ Disruptor隊(duì)列一個消費(fèi)者,所以我將隊(duì)列調(diào)整為只有 1 個再試試(策略依然是 YieldingWaitStrategy)。

跑了一分鐘,發(fā)現(xiàn) CPU 的使用率一直都比較平穩(wěn)而且不高。

總結(jié)

所以排查到此可以有一個結(jié)論了,想要根本解決這個問題需要將我們現(xiàn)有的業(yè)務(wù)拆分;現(xiàn)在是一個應(yīng)用里同時處理了 N 個業(yè)務(wù),每個業(yè)務(wù)都會使用好幾個 Disruptor 隊(duì)列。

由于是在一臺服務(wù)器上運(yùn)行,所以 CPU 資源都是共享的,這就會導(dǎo)致 CPU 的使用率居高不下。

所以我們的調(diào)整方式如下:

  • 為了快速緩解這個問題,先將等待策略換為 BlockingWaitStrategy,可以有效降低 CPU 的使用率(業(yè)務(wù)上也還能接受)。
  • 第二步就需要將應(yīng)用拆分(上文模擬的一個 Disruptor 隊(duì)列),一個應(yīng)用處理一種業(yè)務(wù)類型;然后分別單獨(dú)部署,這樣也可以互相隔離互不影響。

當(dāng)然還有其他的一些優(yōu)化,因?yàn)檫@也是一個老系統(tǒng)了,這次 dump 線程居然發(fā)現(xiàn)創(chuàng)建了 800+ 的線程。

創(chuàng)建線程池的方式也是核心線程數(shù)、***線程數(shù)是一樣的,導(dǎo)致一些空閑的線程也得不到回收;這樣會有很多無意義的資源消耗。

所以也會結(jié)合業(yè)務(wù)將創(chuàng)建線程池的方式調(diào)整一下,將線程數(shù)降下來,盡量的物盡其用。

責(zé)任編輯:武曉燕 來源: 純潔的微笑
相關(guān)推薦

2019-08-19 01:34:38

數(shù)據(jù)庫SQL數(shù)據(jù)庫優(yōu)化

2019-09-27 17:24:26

數(shù)據(jù)庫優(yōu)化sql

2019-08-15 11:30:06

SQL數(shù)據(jù)庫ASH

2021-03-01 06:14:50

環(huán)境高并發(fā)延遲

2019-07-25 08:30:58

數(shù)據(jù)庫服務(wù)器故障

2018-12-06 16:25:39

數(shù)據(jù)庫服務(wù)器線程池

2020-09-25 07:57:42

生產(chǎn)事故系統(tǒng)

2022-06-01 06:17:42

微服務(wù)Kafka

2020-11-03 07:34:12

Kafka后端工程師

2019-06-24 08:17:55

CPUFullGCJava

2019-11-18 13:42:55

MySQL數(shù)據(jù)庫遷移

2019-09-05 09:17:37

MySQL數(shù)據(jù)庫線程

2022-10-10 09:10:07

命令磁盤排查

2019-12-16 07:18:42

數(shù)據(jù)庫SQL代碼

2019-11-22 08:05:01

數(shù)據(jù)庫mysql分區(qū)

2017-10-27 09:01:26

Oracle存儲管理

2019-12-12 10:38:10

mysql數(shù)據(jù)庫nnodb

2023-11-06 07:45:42

單據(jù)圖片處理

2018-07-18 15:37:24

數(shù)據(jù)庫DB2故障處理

2024-06-04 08:19:34

點(diǎn)贊
收藏

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

国产精品国产三级国产在线观看 | 欧洲视频一区二区| 日韩电影免费网址| 一区二区三区国产盗摄| 亚洲一区中文| 亚洲在线视频网站| 亚洲视频在线观看免费| 欧美性色视频在线| 九九精品在线视频| 精品久久久久久久无码| 久久69国产一区二区蜜臀| 成人av片网址| 激情综合久久| 国产免费一区二区三区在线观看| 欧美aa在线视频| 精品成在人线av无码免费看| 国产农村妇女精品| 欧美黑人孕妇孕交| 欧美国产视频在线| 欧美日韩伦理片| 精品中文字幕乱| 欧美日韩一区二区综合| 日韩成人免费视频| 日韩av综合在线观看| 久久最新网址| 亚洲精品资源美女情侣酒店| 欧美深夜福利| 91av视频在线观看| 91视频成人| 国产视频欧美视频| 免费网站成人| 色哟哟日韩精品| 久久久久久久久久久免费| 国产一区一区| 日韩欧美一区二区三区| 久久久久人妻精品一区三寸| 欧美一区免费| 九色综合国产一区二区三区| 国产乱人伦真实精品视频| 午夜视频你懂的| 成人av资源站| www.av片| 91在线精品一区二区三区| 欧美日韩中文字幕在线播放| 久久精品国产精品青草| 亚洲国产精品www| 激情自拍一区| 3d精品h动漫啪啪一区二区| 欧美福利一区| av噜噜色噜噜久久| 一区二区三区精品视频在线观看| 亚洲综合成人婷婷小说| 国产精品日韩成人| 国产免费成人av| 久久久久久免费视频| 成人av电影天堂| 亚洲91视频| 国产精品久久久一区二区三区| 在线成人黄色| 先锋影音亚洲资源| 国产一区福利在线| 蜜桃传媒一区二区三区| 蜜芽视频在线观看| 高清精品视频| 国产欧美 在线欧美| 中文字幕一区二区三区在线视频 | 岛国视频午夜一区免费在线观看| 李宗瑞系列合集久久| 日本丶国产丶欧美色综合| 色开心亚洲综合| 亚洲精品一二区| 18国产精品| 国产日韩欧美夫妻视频在线观看 | 日本一区二区三区四区高清视频 | 91精品久久久久久久久久另类| 欧美日韩专区| 超级碰在线观看| 欧美精彩视频一区二区三区| 日日噜噜噜夜夜爽爽狠狠| 欧美日韩精品免费| 日本一区二区三区视频在线| 91产国在线观看动作片喷水| 欧美人与禽猛交乱配视频| 免费观看黄色的网站| 国产精品成人免费| 一级毛片视频在线| 久久天天躁狠狠躁老女人| 国产韩国精品一区二区三区| 日韩免费av一区二区三区| 国产午夜精品一区二区三区嫩草| 色久视频在线播放| 中文字幕亚洲图片| 欧美va亚洲va日韩∨a综合色| 2022中文字幕| 偷窥少妇高潮呻吟av久久免费| 一本大道色婷婷在线| 国产精品www| 国产精品一区二区免费不卡| 激情av网站| 日韩毛片在线观看| 51精产品一区一区三区| 日韩欧美猛交xxxxx无码| 亚洲国产精品一区二区www | 伊人春色在线观看| 久久久久国产精品免费| 国产精品三上| 国产二区三区四区| 亚洲天堂av网| 欧美黄免费看| 91香蕉视频污版| 亚洲精品成人久久| 亚洲精品二区三区| 久久久久久久久久福利| 精品久久久久av影院| 国产韩日影视精品| 久久婷婷国产91天堂综合精品| 精品欧美一区二区三区精品久久| 免费av一区| 男女午夜激情视频| 亚洲成人黄色在线| 欧美日韩亚洲一区三区| www99xav| 色偷偷偷亚洲综合网另类| 黄色精品网站| 色老板视频在线观看| 精品国产美女在线| 日韩精品乱码av一区二区| 最猛黑人系列在线播放| 久久久久久91| 福利视频网站一区二区三区| av片在线观看网站| 成人高清在线观看| 亚洲综合精品久久| 牛牛精品成人免费视频| 狠狠97人人婷婷五月| 亚洲精品www| 喷水一区二区三区| 好吊日视频在线观看| 波多野结衣久草一区| 亚洲国产综合色| 欧亚精品一区| www黄色av| 麻豆国产va免费精品高清在线| 国产乱色国产精品免费视频| 欧美女同一区| 日本不卡二区| 欧美一区在线视频| 亚洲制服av| 日本最黄一级片免费在线| 成人欧美在线视频| 性感美女极品91精品| 国产探花一区二区| 91精品国产高久久久久久五月天| 欧美成年人在线观看| 波多野结衣91| 日韩伦理一区二区| 成人性免费视频| 在线播放日韩av| 成人免费看黄yyy456| 欧美日韩尤物久久| 黄网站欧美内射| 美乳少妇欧美精品| av午夜精品一区二区三区| 亚洲18在线| 日韩一区二区三区久久| 日韩av免费在线观看| 午夜精品影院在线观看| 国产在线日韩| 羞羞网站在线看| 影音先锋成人资源网站| 中文字幕不卡av| 国产精品久久久久久久久图文区 | 性感女国产在线| 亚洲精品蜜桃久久久久久| 久久成人18免费网站| 日韩一区欧美小说| 欧美三级美国一级| 91青青在线视频| 中文字幕欧美人与畜| 少妇高潮久久久久久潘金莲| 国产色产综合色产在线视频| 国产成人精品三级高清久久91| 有码在线播放| 日产国产精品精品a∨| 中文国产成人精品| 一区在线观看视频| 国产字幕视频一区二区| 国产不卡123| 欧美日韩激情视频在线观看| 久久理论片午夜琪琪电影网| 狠狠综合久久av一区二区小说| 视频在线观看一区| 国产精品高清一区二区| 天堂影视av| 日韩偷拍一区二区| 欧美极品欧美精品欧美视频| 色综合欧美在线视频区| 国内精品视频666| 日韩激情毛片| 免费网站在线观看人|