日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Java系统资源消耗定位概述

發布時間:2024/1/17 windows 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java系统资源消耗定位概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通常運行的Java程序遇到性能問題表象是資源消耗過多、外部處理系統的性能不足,或者資源消耗不多,但是程序響應速度卻達不到要求。

資源主要消耗在CPU 、文件IO、網絡IO以及內存方面,機器資源是有限的,當某資源消耗過多時,通常會造成系統的響應速度慢。

CPU消耗分析

可以使用top或者pidstat 方式來查看進程中線程的CPU消耗情況。

輸入top命令,可以查看CPU的消耗情況:

如果想查看每個核的消耗情況,限進入top視圖,然后 按1:

進top視圖后按 shift+h,可以查看線程CPU消耗情況:

輸入pidstat 1 2 將會每隔1秒輸出當前活動進程的CPU消耗情況,共輸出兩次:

輸入pidstat -p [PID] -t 1 t查看具體進程CPU消耗:

linux 還可以使用vmstat 查看CPU的上下文切換、運行隊列、利用率的信息。ps Hh -eo tid,pcpu 方式也可以用來查看具體線程的CPU消耗狀況;sar來查看一定時間范圍內以及歷史的CPU消耗狀況。

當CPU消耗嚴重時,我們主要觀察us、sy、wa、hi ,wa的值是IO等待消耗的,hi硬件中消耗的,例如網卡接收數據頻繁。Java應用消耗CPU主要體現在 us、sy兩個值上。

us過高時主要Java程序消耗了大部分CPU,這個時候我們通關相關命令找到消耗CPU高的線程ID,(kill-3 pid 或者jstack )導出堆棧,然后定位到具體線程。CPU占用高的線程會一直處于可運行(Runnable)狀態。

造成這個原因一般是在執行死循環、無阻塞、正則、大運算量、頻繁GC。

sy高,表示線程花很多時間在做上下文切換,一般是創建線程太多、并且這些線程多少處于不斷阻塞(IO等待、鎖等待)he執行狀態切換。這個也可以通過線程堆棧分析找出阻塞狀態、鎖競爭狀態過的線程。

文件IO消耗分析

可以使用pidstat 查看線程的文件IO消耗。

輸入:pidstat -d -t -p [pid] 1 100

使用iostat查看整個系統的文件IO消耗情況

使用iostat查看IO消耗情況時,首先要關注的是CPU的iowait%所占的百分比,當iowait占據了主要百分比時,就表示要關注IO消耗了,這時可以通過使用iostat -x這種方式來詳細查看具體情況。

Java應用造成文件IO消耗嚴重主要是多個線程需要進行大量內容寫入,或者磁盤設備本身的處理速度慢,文件系統慢,操作的文件過大。

網絡IO消耗分析

網絡IO的消耗非常值得關注,在linux系統采用sar來分析網絡IO的消耗情況

輸入sar -n ALL 1 2

內存消耗分析

對JVM堆以外的內存方面消耗,最為值得關注的是swap的消耗以及物理內存額消耗,可以通過vmstat 、sar、top 、pidstat 等方式來查看swap 和物理內存的消耗情況

Java應用在創建線程和使用Direct ByteBuffer是使用堆外內存,內存消耗重點關注堆內內存的使用,可以使用jmap,stat,mat,visualvm等方法分析。JVM內存消耗過多會導致 GC頻繁,CPU消耗增加,應用線程執行速度下降,甚至造成OutOfMemoryError,最終進程掛掉。

總結

以上是生活随笔為你收集整理的Java系统资源消耗定位概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。