偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

服務(wù)出現(xiàn)明顯的變慢,該如何診斷處理?

開(kāi)發(fā) 前端
從類(lèi)似CPU的這種硬件底層,判斷類(lèi)似Cache-Miss之類(lèi)的問(wèn)題和調(diào)優(yōu)機(jī)會(huì),出發(fā)點(diǎn)是指令級(jí)別優(yōu)化。這往往門(mén)檻比較高,需要掌握專(zhuān)業(yè)的技能,還得專(zhuān)業(yè)的工具配合,一般出現(xiàn)在新平臺(tái)移植或者追求極致性能的時(shí)候才會(huì)進(jìn)行。

在日常工作中,應(yīng)用出現(xiàn)性能問(wèn)題是不可避免的,絕大部分公司都沒(méi)有專(zhuān)門(mén)的性能團(tuán)隊(duì),出現(xiàn)問(wèn)題還是需要我們自己去排查處理,所以掌握基本的性能知識(shí)和技能就顯得很有必要,也是開(kāi)發(fā)工程師進(jìn)階的必要條件,能否快準(zhǔn)狠的定位解決問(wèn)題,也是對(duì)知識(shí)、技能和能力的檢驗(yàn)。

今天我們來(lái)討論的問(wèn)題是,服務(wù)出現(xiàn)明顯的變慢,該如何診斷處理?

首先我們要確定服務(wù)是突然變慢還運(yùn)行一段時(shí)間后觀察到變慢?類(lèi)似的變慢是經(jīng)常出現(xiàn)還是偶發(fā)的?還有對(duì)慢的定義是什么?是否可以理解為系統(tǒng)對(duì)其他方面的請(qǐng)求的延時(shí)變長(zhǎng)?

在理清楚問(wèn)題的癥狀后,更有利于分析問(wèn)題的具體原因,大概有以下思路:

  • 檢查應(yīng)用本身的錯(cuò)誤日志,看是否在系統(tǒng)變慢的時(shí)候存在大量錯(cuò)誤日志,來(lái)判斷是否出現(xiàn)意外的程序錯(cuò)誤。對(duì)于分布式系統(tǒng),很多公司都會(huì)有日志、性能監(jiān)控系統(tǒng),使用一些Java診斷工具也可以用于診斷,監(jiān)控應(yīng)用是否大量出現(xiàn)某種類(lèi)型的異常。
  • 監(jiān)控Java服務(wù)本身,查看GC日志里面是否觀察到頻繁的Full GC等,可以利用jstat等工具獲取內(nèi)存使用的統(tǒng)計(jì)信息,利用jstack等工具檢查是否出現(xiàn)死鎖等。
  • 如果還不能定位問(wèn)題,可以使用性能檢測(cè)工具Profiling,因?yàn)樗鼘?duì)系統(tǒng)是有侵入性的,非必要,不建議在生產(chǎn)系統(tǒng)進(jìn)行。
  • 定位到問(wèn)題,采取相應(yīng)的補(bǔ)救措施,然后驗(yàn)證是否解決,如果沒(méi)有解決,重復(fù)上面的操作。

接下來(lái)我們來(lái)了解一下業(yè)內(nèi)廣泛的性能分析方法論。方法論總結(jié)為兩類(lèi):

  • 自上而下。從應(yīng)用頂層,逐步深入到具體的不同模塊,或者更近一步的技術(shù)細(xì)節(jié)單元,找到可能的問(wèn)題和解決方法,這也是最常見(jiàn)的性能分析方法,也是大部分人的選擇。
  • 自下而上。從類(lèi)似CPU的這種硬件底層,判斷類(lèi)似Cache-Miss之類(lèi)的問(wèn)題和調(diào)優(yōu)機(jī)會(huì),出發(fā)點(diǎn)是指令級(jí)別優(yōu)化。這往往門(mén)檻比較高,需要掌握專(zhuān)業(yè)的技能,還得專(zhuān)業(yè)的工具配合,一般出現(xiàn)在新平臺(tái)移植或者追求極致性能的時(shí)候才會(huì)進(jìn)行。

我們重點(diǎn)看第一種,自上而下。各個(gè)階段的思路以及使用的工具等。

分析系統(tǒng)的性能,我們常從CPU、內(nèi)存和IO等入手,這幾點(diǎn)是重點(diǎn)關(guān)注項(xiàng)。對(duì)于CPU,如果是Linux環(huán)境,可以先用top命令查看負(fù)載情況:

可以看到,平均負(fù)載的三個(gè)值并不高,也沒(méi)有升高的跡象,可以先不特別關(guān)注,接下來(lái)分析最耗費(fèi)CPU的Java線(xiàn)程,步驟如下:

利用top命令獲取相應(yīng)的pid,-H代表thread模式,也可以配合grep命令更精確定位。

top -H

然后轉(zhuǎn)換成16進(jìn)制。

printf "%x" your_pid

最后利用jstack獲取的線(xiàn)程棧,對(duì)比相應(yīng)的ID即可。也可以用vmstat,查看上下文切換的數(shù)量,比如指定時(shí)間間隔為1,收集20次

vmstat -1 -20

如果上下文切換非常高,并且系統(tǒng)中高很多,就表明可能存在不合理的線(xiàn)程調(diào)度導(dǎo)致的,可以用pidstat進(jìn)一步分析定位。

除了CPU,內(nèi)存和IO也有很多注意事項(xiàng):

  • 利用free之類(lèi)查看內(nèi)存的使用情況。
  • 進(jìn)一步判斷 swap 使用情況,top命令輸出中Virt作為虛擬內(nèi)存使用量,就是物理內(nèi)存(Res)和 swap 求和,所以可以反推 swap 使用。顯然,JVM 是不希望發(fā)生大量的 swap 使用的。
  • 對(duì)于 IO 問(wèn)題,既可能發(fā)生在磁盤(pán)IO,也可能是網(wǎng)絡(luò)IO。例如,利用iostat等命令有助于判斷磁盤(pán)的健康狀況。
責(zé)任編輯:武曉燕 來(lái)源: 故里學(xué)Java
相關(guān)推薦

2011-02-28 14:08:31

網(wǎng)速變慢局域網(wǎng)網(wǎng)速

2018-01-24 19:59:03

數(shù)據(jù)庫(kù)Oracle壞塊

2023-03-09 12:21:38

2010-11-15 09:24:37

處理器市場(chǎng)AMD

2020-08-10 07:49:51

服務(wù)器

2012-02-07 10:25:50

2016-05-12 16:39:57

IT運(yùn)維網(wǎng)絡(luò)

2016-08-04 16:04:56

2020-06-10 14:10:53

服務(wù)開(kāi)發(fā) 架構(gòu)

2009-09-02 17:25:02

郵件服務(wù)器

2016-06-23 15:50:01

IT

2021-04-19 07:41:37

AcceptEmfile問(wèn)題

2019-05-09 15:31:23

攻擊服務(wù)器安全

2017-07-05 14:14:33

MySQL表服務(wù)變慢

2021-09-03 08:44:02

運(yùn)維安全身份認(rèn)證堡壘機(jī)

2012-01-18 11:25:36

服務(wù)器優(yōu)化

2010-10-28 09:24:26

2013-05-24 10:15:55

CDNCDN故障

2018-10-23 10:28:01

服務(wù)器流量高并發(fā)

2010-06-21 10:02:32

點(diǎn)贊
收藏

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