初探提高系統(tǒng)定時(shí)調(diào)度頻率

背景

最近工作中要做一個(gè)優(yōu)化鳖孤,將定時(shí)任務(wù)的調(diào)度頻率從1min/次提升到30s/次,相當(dāng)于頻率提高一倍抡笼。這就需要我從系統(tǒng)性能苏揣、任務(wù)處理時(shí)間等方面進(jìn)行分析了。

數(shù)據(jù)準(zhǔn)備

首先是需要對(duì)該場(chǎng)景下的調(diào)度數(shù)據(jù)進(jìn)行分析推姻。我的任務(wù)場(chǎng)景是比較簡(jiǎn)單的平匈,就是每次定時(shí)調(diào)度批量處理某些任務(wù)。我的數(shù)據(jù)準(zhǔn)備也是比較簡(jiǎn)單的,只需要觀察此時(shí)線上每次調(diào)度時(shí)會(huì)處理的任務(wù)數(shù)吐葱,再加上后續(xù)業(yè)務(wù)上會(huì)擴(kuò)張的任務(wù)數(shù)量街望,對(duì)任務(wù)數(shù)據(jù)量進(jìn)行線下mock,然后分析每次任務(wù)執(zhí)行時(shí)的CPU占用率以及任務(wù)執(zhí)行的總時(shí)間就可以了弟跑。

工具準(zhǔn)備

分析CPU性能有很多的工具灾前,開(kāi)發(fā)和線上的機(jī)器都是Linux的RedHat系列,所以我使用的是nmon和他的解析工具nmon Analyser

第一步在開(kāi)發(fā)機(jī)上安裝nmon性能監(jiān)控工具:

sudo yum install nmon

驗(yàn)證安裝成功孟辑,輸入nmon命令進(jìn)入性能監(jiān)控控制臺(tái)哎甲,如下:


驗(yàn)證nmon安裝成功

工具使用

我先開(kāi)始采集機(jī)器性能數(shù)據(jù)(每一秒采集一次數(shù)據(jù),共采集5分鐘的數(shù)據(jù))

nmon -s 1 -c300 -f -m /home/admin/tmp &

-s1:每一秒采集一次數(shù)據(jù)饲嗽;
-c300:采集300次炭玫,即為采集5分鐘的數(shù)據(jù);
-f:生成的數(shù)據(jù)文件名中包含文件創(chuàng)建的時(shí)間
-m:生成的數(shù)據(jù)文件的存放目錄
&:后臺(tái)運(yùn)行

接著開(kāi)始觸發(fā)定時(shí)調(diào)度貌虾,定時(shí)任務(wù)觸發(fā)完吞加,觀察nmon數(shù)據(jù)是否采集結(jié)束,可以通過(guò)觀察/home/admin/tmp下的nmon文件大小是否還在變大來(lái)確定尽狠。nmon文件生成完畢后衔憨,可以通過(guò)測(cè)試哥哥教我的命令在文件生成的目錄運(yùn)行命令

python -m SimpkleHttpServer 2345

接著在本地瀏覽器中輸入"機(jī)器域名:2345"的端口號(hào),就可以將.nmon文件下載下來(lái)了袄膏。

下載分析工具nmon Analyser践图,下載下來(lái)是一個(gè)excel文件,選擇啟用宏并打開(kāi)Analyser的sheet沉馆,點(diǎn)擊Analyze nmon data码党,將download的
.nmon文件引入。

點(diǎn)擊Analyze nmon data.png

稍等片刻斥黑,我們就可以看到一系列的性能數(shù)據(jù)了揖盘,類(lèi)似如下圖(并不是我的nmon數(shù)據(jù)圖)。
性能數(shù)據(jù)

在我的數(shù)據(jù)里面锌奴,CPU使用率高達(dá)100%兽狭,所以需要進(jìn)一步分析CPU占用率高的進(jìn)程是哪一個(gè)了莺葫。

分析命令使用

可以使用top命令去觀察CPU占用量大的進(jìn)程是哪一個(gè)秋秤,也是一秒鐘統(tǒng)計(jì)一次,可以得到類(lèi)似的數(shù)據(jù)文件。

top -d 1 -b > /home/admin/tmp/top.txt
top(并不是我的top文件)

而我的top文件告訴我進(jìn)程占用量最高的是Java進(jìn)程耻姥。命令查詢(xún)的結(jié)果可以和我JAVA應(yīng)用服務(wù)所對(duì)應(yīng)。

jps -v

所以確定了造成CPU占用率過(guò)高的原因確實(shí)是應(yīng)用JAVA服務(wù)有咨,接著需要進(jìn)一步確認(rèn)是JAVA進(jìn)程中的哪一個(gè)線程造成的琐簇。可以通過(guò)命令分析線程的CPU利用率

top -Hp pid -d 1 -b > /home/admin/tmp/top2.txt
線程數(shù)據(jù)-1

這時(shí)候需要將圖中的線程號(hào)換算成16進(jìn)制數(shù)據(jù),通過(guò)命令jstack來(lái)分析是哪些線程造成的

jstack pid | grep 十六進(jìn)制線程號(hào)

線程數(shù)據(jù)-2

其中C2 CompilerThread0這個(gè)線程網(wǎng)上的說(shuō)明有很多JAVA 進(jìn)程異常分析 - CPU婉商、內(nèi)存似忧,剩下的確實(shí)都是任務(wù)調(diào)度的線程 。

因?yàn)殚_(kāi)發(fā)機(jī)器的性能和線上機(jī)器的性能是不能比擬的丈秩,所以在做性能分析的時(shí)候盯捌,要申請(qǐng)一臺(tái)和線上機(jī)器性能一樣的機(jī)器,當(dāng)我們換到和線上機(jī)器配置的開(kāi)發(fā)機(jī)器時(shí)蘑秽,CPU的利用率從最高100%降到了最高20%饺著,說(shuō)明線上機(jī)器的性能是可以支撐定時(shí)調(diào)度批量觸發(fā)任務(wù)的。

任務(wù)處理時(shí)間

除了要看機(jī)器的性能外肠牲,還需要看在一次調(diào)度時(shí)間內(nèi)幼衰,是否所有的任務(wù)都可以被執(zhí)行完,用以判斷是否會(huì)存在積壓的情況缀雳。

每次觸發(fā)共有6種類(lèi)型的任務(wù)會(huì)被觸發(fā)渡嚣,所以需要查詢(xún)線上這6種類(lèi)型的任務(wù)的一次執(zhí)行時(shí)間,并且每次定時(shí)任務(wù)觸發(fā)時(shí)各個(gè)類(lèi)型的任務(wù)所占的比例肥印,計(jì)算時(shí)根據(jù)線上機(jī)器數(shù)與CPU數(shù)計(jì)算整體的任務(wù)完成時(shí)間识椰。

上下游業(yè)務(wù)分析

在機(jī)器性能和任務(wù)處理時(shí)間都滿(mǎn)足的情況下,本以為可以完成這次調(diào)撥頻率提高的優(yōu)化竖独,結(jié)果被組里的老司機(jī)告知裤唠,有一種任務(wù)對(duì)應(yīng)的下游業(yè)務(wù)只能在每分鐘的第40s進(jìn)行處理。

結(jié)論

最后因?yàn)橄掠螛I(yè)務(wù)接口處理的原因莹痢,不能執(zhí)行頻率提高的優(yōu)化种蘸。

總結(jié)

初探的過(guò)程主要是數(shù)據(jù)準(zhǔn)備,工具準(zhǔn)備以及壓測(cè)竞膳,除了從機(jī)器的性能上航瞭,還要結(jié)合業(yè)務(wù)場(chǎng)景進(jìn)行分析,在整個(gè)過(guò)程中主要使用了如下的工具和命令進(jìn)行分析

1.nmon -s 1 -c300 -f -m /home/admin/tmp &
2.top -Hp 72474 -d 1 -b > /home/admin/tmp/top72474.txt
3.top -d 1 -b > top1.txt
4.python -m SimpleHTTPServer 2345
5.jps -v
6.jstack 72474
7.jinfo -flag CICOmpilerCount 72474
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坦辟,一起剝皮案震驚了整個(gè)濱河市刊侯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锉走,老刑警劉巖滨彻,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異挪蹭,居然都是意外死亡亭饵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)梁厉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辜羊,“玉大人,你說(shuō)我怎么就攤上這事“送海” “怎么了碱妆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)昔驱。 經(jīng)常有香客問(wèn)我疹尾,道長(zhǎng),這世上最難降的妖魔是什么骤肛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任航棱,我火速辦了婚禮,結(jié)果婚禮上萌衬,老公的妹妹穿的比我還像新娘饮醇。我一直安慰自己,他們只是感情好秕豫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布朴艰。 她就那樣靜靜地躺著,像睡著了一般混移。 火紅的嫁衣襯著肌膚如雪祠墅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天歌径,我揣著相機(jī)與錄音毁嗦,去河邊找鬼。 笑死回铛,一個(gè)胖子當(dāng)著我的面吹牛狗准,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茵肃,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼腔长,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了验残?” 一聲冷哼從身側(cè)響起捞附,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎您没,沒(méi)想到半個(gè)月后鸟召,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡氨鹏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年欧募,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喻犁。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡槽片,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肢础,到底是詐尸還是另有隱情还栓,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布传轰,位于F島的核電站剩盒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏慨蛙。R本人自食惡果不足惜辽聊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望期贫。 院中可真熱鬧跟匆,春花似錦、人聲如沸通砍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)封孙。三九已至迹冤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虎忌,已是汗流浹背泡徙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膜蠢,地道東北人堪藐。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像挑围,于是被迫代替她去往敵國(guó)和親庶橱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容