1.影響性能考慮點包括:
數據庫、應用程序、中間件(tomcat、nginx)、網絡和操作系統等方面。
首先考慮自己的應用屬于 CPU密集型 還是 IO密集型
cpu密集型
計算,排序,分組查詢,各種算法
IO密集型
網絡傳輸,磁盤讀寫,數據庫,redis
2.JVM監控?
因為JVM的 本地方法棧 程序計數器 虛擬機棧 是由JVM自動回收的,所以這里不需要進行調優,我們所說的調優,是 堆調優?
內存分配模型
具體去看我的 JVM文章
JConsole與 jvisualvm工具
輸入這個命令
?
jvisualvm工具
cmd命令
運行:正在運行的
休眠:sleep
等待:wait
駐留:線程池里面的空閑線程
?監視:阻塞的線程,正在等待鎖
下載常用插件
?
根據顯示,我的這個應用是IO密集型的,CPU占用不高 ,而內存消耗大,說明就是傳輸數據的應用?
3.性能壓測 - 優化 -中間件對性能的影響?
怎么優化
使用JMeter 進行壓力測試
3.1 壓測 Nginx
創建線程組 ,勾選循環次數永遠? 來達到不斷監測的效果?
配置好
然后去虛擬機先打開CPU檢測
docker stats
?
打開監控以后,開始壓測
?
?說明Nginx屬于CPU計算型,不占內存,但是需要線程來進行操作轉發
壓測內容 | 壓測線程數 | 吞吐量/s | 90%響應時間 | 99%響應時間 |
Nginx | 50 | 7459.9 | 10 | 48 |
GateWay | 50 | 2967.5 | 24 | 40 |
簡單服務 | 50 | 10461.5 | 6 | 78 |
首頁一級菜單渲染 | 50 | 488(db,thymeleaf) | 196 | 369 |
首頁渲染(開緩存) | 50 | 1092 | 81 | 149 |
首頁渲染(開緩存,優化數據庫,關日志) | 1200 | 70 | 132 | |
三級分類數據獲取 | 50 | 9.9(db)/15(優化后·) | 5432 | 5855 |
首頁全量數據獲取 | 50 | 20 | 3175 | 3923 |
Nginx+GateWay | 50 | |||
Gateway+簡單服務 | 50 | 2210 | 51 | 102 |
全鏈路 | 50 | 113.8 | 49 | 86 |
?中間件越多,性能損失越大,大多都損失在網絡交互了
解決方案:
1.提高中間件的性能
2.買更好的網線
3.買更好的網卡
優化業務
業務功能:
- ? DB(MYSQL 優化)
- ? 模板渲染速度(Thymeleaf)? 打開緩存
- ? 靜態資源
?3.2 壓測網關
因為404 返回這個,不過沒關系,我們打開 jvisualvm
一直在進行垃圾回收?
3.3 壓測服務
寫了個測試接口返回 hello