1. 程式人生 > 其它 >壓力測試 及jvm 優化

壓力測試 及jvm 優化

堆:堆中存放的是物件
新生代 和老年代
新生代: eden 區 和 s1 s2區
老年代:

如果物件較大  放不進Eden區  那麼會進行一次youngGC 再次放入
如果還是放不進eden區 那麼就會放入old區,
經過youngGC倖存下來的物件 會進入s1 區  每次經過youngGC 如果s1 還存活
那麼s1的物件會進入s2 s2中的物件會進入s1  每次年齡+1  如果超過閾值
那麼就會進入老年代    
在放入old 區時 還是會判斷 該物件是否能放入old區  如果放不下,
先進行一次fullGC,(fullGC是針對所有堆中的物件進行GC)  再次放入old區

優化點  JVM防止頻繁的fullGC
jvisualvm
新增外掛。如果外掛不可用,那麼需要更新
https://visualvm.github.io/pluginscenters.html 需要結合你的jdk的版本來選擇對應的外掛的版本

 

我們需要檢視每一個元件(中介軟體) 所花費的時間是多少  效能高低

此時設定執行緒組

 檢視聚合報告

docker stats  檢視各個容器 在傳送請求時 的引數   發現nginx 的網路io高 而block IO 卻沒有

gateWay閘道器壓測  
直接輸入閘道器的地址

 檢視cpu和堆的使用情況

Gc 的使用情況

 設定閘道器最大執行記憶體

 設定product 使用記憶體

在product服務中建立一個簡單的介面訪問
    @RequestMapping("/hello")
    @ResponseBody
    public String Hello(){
        
        return "hello";
    }

然後複製地址到jmeter 上去壓測



 以上發現 單獨訪問 每個服務訪問速度還是可以的

那麼我們來測試 nginx +gateway 效果怎麼樣

 這裡我們發現吞吐量快速降低

在我們獲取首頁全量資料時  需要開啟 將靜態資源也包含在內