接口單次執行快,並發慢,性能優化
1 重現問題,構建並發測試----300並發6.7s
處理方案:jmeter構建並發測試,分直接針對接口並發,sql並發
2 數據庫服務器cpu,內存分析,
處理方案:查詢數據庫(4核8g)cpu cpu高達99% (top --> 1)
3 發現kswapd0進程cpu占用300%,
處理方案:kill進程cpu直接10%不到
4 第二天kswapd0進程自啟,cpu占用又高飆300%,top發現tsm占用內存,netstat -antlp 發現tsm很多境外ip,確定是木馬挖礦病毒,
處理方案::kill -9 tsm進程,刪除相關文件及定時任務
5 SHOW FULL PROCESSLIST;發現慢sql,----300並發3s
處理方案:做sql優化,建組合索引,這一步很耗時間
6 查詢業務邏輯檢查,for循環內部到4次查庫,其中一次還嵌套了for循環查庫,這直接導致,1次調用接口,如果循環10次,for就要訪問數據庫最少40次。----300並發1s
處理方案:for循環內部查庫,放到循環外,list做參數查詢結果,業務邏輯加到for中,減少數據庫訪問次數