<center id="qkqgy"><optgroup id="qkqgy"></optgroup></center>
  • <menu id="qkqgy"></menu>
    <nav id="qkqgy"></nav>
    <xmp id="qkqgy"><nav id="qkqgy"></nav>
  • <xmp id="qkqgy"><menu id="qkqgy"></menu>
    <menu id="qkqgy"><menu id="qkqgy"></menu></menu>
    <tt id="qkqgy"><tt id="qkqgy"></tt></tt>

  • 前言

    開發了大半年的數據中臺系統,近期在測試環境上線壓測,監控JVM時發現GC頻繁,開啟GC日志后發現隔幾秒就要做一次Minor
    GC(對新生代內存進行回收),并且堆內存不到十分之一的時候就進行GC(測試-Xmx設置為10g,使用不到1g就進行了gc),于是從兩個方面進行系統的優化(代碼層面和jvm啟動參數)。

    1、代碼層面

    觀察jvm內存使用的時候,發現堆內存在5秒內就迅速上升1g,此時HTTP訪問的人數為1,那么在并發訪問數目極少的情況下,內存上升快的原因應該就是后臺的監控線程了(在后臺的線程池中做服務進程、數據倉庫、中間件kafka的監控),在這些監控線程中,有大量的RESTful
    API請求以及對服務器端口的檢測(遠程)。經過分析代碼發現,因為監控線程定時運行,其中大部分的遠程連接和api請求可以不斷開,保存在內存中重復使用這些對象(加鎖機制)。通過這部分的改造之后再觀察jvm的使用情況,發現效果顯著。

    2、jvm參數層面

    通過分析代碼,總結出系統新生代的內存占用大,并且在GC的時候會回收大量的內存,前面也有說到過一共10G的堆內存,使用不到1G就進行了GC。因此從jvm的參數方面進行系統的調優。接下來會先介紹jvm的一些基礎知識,并幫助大家進行參數調優理解。

    2.1、JVM結構

    技術
    下載桌面版
    GitHub
    百度網盤(提取碼:draw)
    Gitee
    云服務器優惠
    阿里云優惠券
    騰訊云優惠券
    華為云優惠券
    站點信息
    問題反饋
    郵箱:ixiaoyang8@qq.com
    QQ群:766591547
    關注微信
    巨胸美乳无码人妻视频