① 架構層面的優化
1) 水平擴展、無狀態化設計
2) 動靜分離
② 機器及網絡傳輸優化:
1) 增大機器配置、增大機器網絡寬帶
2) 壓縮傳輸
3) TCP長連接快速回收、重複利用
③ 框架及代碼層面:
1) 合併請求,減少序列化,減少請求數量;
2) 緩存技術:緩存粒度、有效期,緩存預熱,二級緩存,本地緩存
3) 異步化調用:消息隊列、日誌異步
4) 線程池,NIO
5) 減少鎖使用
6) 避免頻繁創建銷燬對象,線程池,數據庫連接池,httpPool都是這個道理
④ 數據庫層面:
1) 讀寫分離
2) 降低隔離性,事務隔離性
3) Sql優化,索引,表設計是否合理
4) 批處理,預處理
⑤ 中間件調優:
1) 集群化部署
2) 連接池,工作進程數,線程數
3) 其他各種參數配置調整
⑥ 搭建實時性能監控平臺,逐步加壓找性能瓶頸:
1) Jmeter
2) Pinpoint、zipkin、influxdb等
3) Jstat、jconsole、jmap、top、free -m、df -h
⑦ JVM調優(穩定性)
1) 堆內存初始化大小,最大
2) 使用G1垃圾回收器
閱讀更多 wendellFang 的文章