手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

幫助中心 >  技術(shù)知識庫 >  云服務(wù)器 >  服務(wù)器教程 >  服務(wù)器卡頓、CPU飆升、接口負(fù)載劇增,如何定位到Java代碼?

服務(wù)器卡頓、CPU飆升、接口負(fù)載劇增,如何定位到Java代碼?

2023-07-07 13:53:58 1875

一、線上服務(wù)器CPU飆升,如何定位到Java代碼

 

解決這個問題的關(guān)鍵是要找到Java代碼的位置。下面分享一下排查思路,以CentOS為例,總結(jié)為4步。

 

1步,使用top命令找到占用CPU高的進(jìn)程。

 

2步,使用ps –mp命令找到進(jìn)程下占用CPU高的線程ID。

 

3步,使用printf命令將線程ID轉(zhuǎn)換成十六進(jìn)制數(shù)。

 

4步,使用jstack命令輸出線程運行狀態(tài)的日志信息。

 

二、生產(chǎn)環(huán)境服務(wù)器變慢,如何診斷處理

生產(chǎn)環(huán)境服務(wù)器變慢主要涉及3個維度:CPU利用率、磁盤I/O效率、內(nèi)存瓶頸。

1、CPU利用率

 

CPU利用率過高或者CPU利用率過低,都會影響程序的處理效率。CPU利用率過高,說明當(dāng)前服務(wù)器要處理的指令比較多,當(dāng)CPU忙不過來的時候,指令的運行效率自然就會下降,用戶的感受就是程序響應(yīng)變慢了。

 

針對這個問題,我們可以使用top命令查詢當(dāng)前系統(tǒng)中占用CPU過高的進(jìn)程,并定位到這個進(jìn)程中比較活躍的線程。再通過jstack命令打印當(dāng)前虛擬機的線程快照,根據(jù)快照日志排查問題代碼。

 

如果CPU利用率過低,則說明程序資源使用不夠,可以增加線程數(shù)量提升程序性能。

2、磁盤I/O效率

 

在程序運行過程中會直接或者間接涉及一些與磁盤I/O相關(guān)的操作,比如程序直接讀/寫磁盤或者程序依賴的第三方組件對磁盤進(jìn)行持久化存儲,此時磁盤I/O效率就會對程序運行效率產(chǎn)生影響。

 

針對這種情況可以使用iostat命令查看,如果磁盤負(fù)載較高,可以針對性地進(jìn)行優(yōu)化。比如,借助緩存系統(tǒng),減少磁盤I/O次數(shù);用順序?qū)懱娲S機寫入,減少尋址開銷;使用mmap替代read/write,減少內(nèi)存拷貝次數(shù)。另外,磁盤I/O效率可以通過CPU與負(fù)載的非線性關(guān)系體現(xiàn)出來。當(dāng)負(fù)載增大時,系統(tǒng)吞吐量不能有效增大,CPU不能線性增長,則很可能是磁盤I/O出現(xiàn)阻塞。

3、內(nèi)存瓶頸

 

內(nèi)存作為一塊臨時存儲數(shù)據(jù)的組件,所有CPU運行的指令都需要從內(nèi)存中去讀/寫。內(nèi)存的合理使用可以減少應(yīng)用和磁盤的I/O頻率,減少網(wǎng)絡(luò)I/O的頻率,極大地提升I/O性能。

 

JVM對內(nèi)存的合理分配,能夠避免頻繁的YGC和FULL GC。當(dāng)內(nèi)存使用率較高時,可以用dump命令查出JVM堆內(nèi)存,用MAT工具進(jìn)行分析,查出大對象或者占用內(nèi)存最多的對象,以及排查是否存在內(nèi)存泄漏的問題。如果用 dump 命令查出的堆內(nèi)存文件正常,則可以考慮是堆外內(nèi)存被大量使用導(dǎo)致出現(xiàn)問題,此時需要借助操作系統(tǒng)的pmap命令查出進(jìn)程的內(nèi)存分配情況。如果CPU和內(nèi)存使用率都很正常,那么就需要進(jìn)一步開啟GC日志,分析用戶線程暫停的時間、各部分內(nèi)存區(qū)域GC次數(shù)和時間等指標(biāo),這里可以借助jstat命令或可視化工具GCEasy等。如果問題出在GC上,則考慮是不是內(nèi)存不足,然后根據(jù)垃圾對象的特點進(jìn)行參數(shù)調(diào)優(yōu),使用更適合的垃圾收集器,用jstack命令分析各個線程的狀態(tài)。如果問題比較隱蔽,則考慮是否開啟JMX,使用 visualmv 等可視化工具進(jìn)行遠(yuǎn)程監(jiān)控與分析。

提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: