JVM調優實戰


1.jvm調優分類

1.1JVM預調優:

根據業務場景,注重吞吐量還是注重響應時間;

提升硬件性能,最簡單,但是成本最高。

 

1.2程序卡頓:

1.3OOM:

 

2.秒殺場景JVM調優:每秒2000並發量。采用負載均衡,平均每台服務器每秒500並發量。

場景一:大量的請求訪問到服務器,造成JVM的新生代瞬間產生大量對象,占用大量內存,當survivor區域內的對象占到空間的一半兒時,直接將對象放入Old區。

            那么許多朝生夕死的對象,就會進入到Old區。Old區進行FullGC時,采用標記整理的方式,比較耗時,所以,大量朝生夕死的對象進來到Old區后,比較耗費性能。

解決方案:增大新生代內存,使Survivor區內存不被占用太滿而導致對象直接進入Old區。這樣,朝生夕死的對象就不會直接進入Old區,這樣就減少了FullGC的次數,提升了

                效率。

                 縮小棧的內存,一般256k就夠。

 

3.CPU占用過高100%的調優思路:

兩種情況:線程死鎖和GC頻繁。

解決思路;Top命令查看占用CPU高的進程;用jstack輸出線程信息;定位占用CPU高的線程;定位具體代碼;

 

4.JVM調優實例

場景一:采用jdk線程池,設置了相應參數,但是請求數過多,導致線程池中阻塞隊列中的對象過多,導致內存溢出,報OOM錯誤。報limit exceed錯誤。Old區全是阻塞隊列的對象,但是GC不能將其回收,所以報這個錯誤。

場景二:static變量里,存入了過多的無關對象,造成了內存泄漏,從而發生了OOM。

            連接(IO等)未關閉;

 

 

5.當已經發生OOM,需要排查時,就要用到dump堆日志文件了。

排查dump日志,用MAT工具。

內存泄漏如何排查:1.采用MAT工具分析。

            

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM