線上遇到的問題

一、服務器cpu使用100%d的解決方法
1、查找哪些進程在耗cpu
使用top命令
2、把進程的棧dump到文件裏,以便後面的分析
jstack 6633 > cpu1128.log
3、看看這個進程裏面哪些線程在佔用cpu
top -p 6633 -H
4、接着要看剛纔dump出來的cpu日誌了,裏面會有6633這個進程下面每個線程的棧信息,但是是十六進制顯示的,所以先把5159轉換成16進制
printf “%0x\n” 5159
5、在cpu日誌裏找PID=1427的線程

二、內存溢出(outof memory error)
在這裏插入圖片描述
請求出現內存溢出異常,是一個項目出現的,因爲我沒有參與過,不太清楚具體情況。

PermSpace主要是存放靜態的類信息和方法信息,靜態的方法和變量,final標註的常量信息等。指的是方法區。
這個出現異常可能是請求數據太多,請求也很多,導致方法區內存不夠用。
增加-XX:PermSize和-XX:MaxPermSize的大小。

可以使用jstat命令查看永久區的內存使用情況
Java Virtual Machine Statistics Minitoring Tool 用於收集HotSpot虛擬機各方面的運行數據,可以顯示本地或遠程虛擬機進程中的類裝載、內存、垃圾收集、JIT編譯等運行數據。
jstat [option vmid [interval[s|ms] [count]] ]

jstat輸出的數據都是以kb爲單位的。

– VMID與LVMID需要特別說明下:如果是本地虛擬機進程,VMID和LVMID是一致的
option代表這用戶希望查詢的虛擬機信息,主要分爲3類:類裝載、垃圾收集和運行期編譯狀況,具體選項及作用如下:

-class :監視類裝載、卸載數量、總空間及類裝載所耗費的時間

-gc 監視Java堆狀況,包括Eden區、2個Survivor區、老年代、永久代等的容量

-gccapacity 監視內容與-gc基本相同,但輸出主要關注Java堆各個區域使用到的最大和最小空間

-gcutil 監視內容與-gc基本相同,但輸出主要關注已使用空間佔總空間的百分比 (這是博主在性能監控中最常用的選項)

-gccause 與-gcutil功能一樣,但是會額外輸出導致上一次GC產生的原因

-gcnew 監視新生代GC的狀況

-gcnewcapacity 監視內容與-gcnew基本相同,輸出主要關注使用到的最大和最小空間

-gcold 監視老年代GC的狀況

-gcoldcapacity 監視內容與——gcold基本相同,輸出主要關注使用到的最大和最小空間

-gcpermcapacity 輸出永久代使用到的最大和最小空間

-compiler 輸出JIT編譯器編譯過的方法、耗時等信息

-printcompilation 輸出已經被JIT編譯的方法

例如:jstat -gcpermcapacity pid

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章