壓力測試 及jvm 優化
阿新 • • 發佈:2022-05-31
堆:堆中存放的是物件
新生代 和老年代 新生代: 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 效果怎麼樣
這裡我們發現吞吐量快速降低
在我們獲取首頁全量資料時 需要開啟 將靜態資源也包含在內