JVM 调优手段
2019獨角獸企業重金招聘Python工程師標準>>>
uptime // 查看系統負載情況,運行時間:7分鐘, 3個連接數,1,5,15分鐘的系統負載(運行的平均進程數:0.8,0.93,0.50)
top // 查看系統IO, CPU 進程,內存 等所有信息
vmstat? | 4?// 統計CPU 內存 IO 等情況 和 上面類似, cs us 說明線程切換多
pidstat?// 用于細致觀察每一個進程,需要額外安裝
-t // 顯示線程
perfmon // 在windows上 查看各種線程情況,系統自帶的
Process Explorer // 一個比上面更加強大的東西
jps ?// 顯示所有java相關進程 - m -q -l -v?
jmap // 生成java程序堆快照對象統計信息 jmap -histo 2972 >cL/a.txt
? ? jmap -dump:format=b, file=c:\heap.hprod 2972 // 導出堆信息
jstack // 打印線程信息 -l 打印鎖 -m ?打印針信息-F 強制 jstack 120 >> C:\a.txt
JConsole //圖形化監控?,最要給線程起一個好聽的名字 便于拍錯
Visual VM // 更加漂亮
?JVM 內存: 堆 + 永久區 +線程站+直接內存。?
堆溢出:增加Xms 對空間大小 or 增加是放內存頻率
永久區溢出:類的數量太多,例如cglib產生大量類 類的metainfor存在permGen 所以造成溢出,增大永久區大小 or 設置允許回收class元數據。
Java 棧溢出:堆空間 + 棧空間(線程空間) < 總空間。縮小堆空間,解決。
直接內存溢出:ByteBuffer.allocateDirect(1024*1024). 減少堆空間,估計觸發GC。
MAT(Memory Analyzer) // 一中分析內存Dump的軟件
Shallow Heap: 對象結構大小,比如String結構大小24個字節,永遠不變。
Deep Heap: 對象的真實占用內存的大小。?
Jmeter // 壓力測試的一個工具,MAT發現一個ConcurrentHashMap 占內存很大,存了太多Session,導致Tomcat OOM. Tomcat 默認20分鐘過期。解決方法: 增加堆大小 縮小Session過期時間,
計算系統并發壓力:JQL 取得Session列表類似SQL,select s.creationTime from session order by time;
(最后一個session - 第一個session) = session 創建的持續毫秒數
(最后一個session - 第一個session) /1000 = 換算成秒?
訪問數 /?(最后一個session - 第一個session) /1000 ? = 并發量
eg: 9941 / ((14646646464-143473747374)/ 1000) = 320次請求/秒
?
?
?
?
?
?
?
轉載于:https://my.oschina.net/Business/blog/979259
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 【HDOJ 5384】Danganron
- 下一篇: BZOJ3627 [JLOI2014]路