1. 程式人生 > 其它 >記一次服務優化

記一次服務優化

最近公司有個專案,再某一次活動時,流量暴增,達到了1萬QPS,因資料庫、服務擴容不及時,停止服務近5分鐘,受影響使用者近20W。所以有了這一次優化。

目標:

  1、支援最大40000 QPS

  2、能夠及時動態擴縮容。

 

分析原因:

  1. 流量在特定時間點暴增達到服務上面,流量來的太突然,沒有提前預警。
  2. 這個服務之前流量較小,MySQL機器配置較低,無法承受大併發寫入。
  3. 服務某些介面,沒有接入快取,直接查庫。

 

優化思路:

  1. 限流。服務的閘道器層進行限流。
  2. 資料庫升級配置,主庫配置32C64G(此配置經壓測大約可以支援2QPS的寫),從庫擴容多個節點。
  3. Redis叢集擴容。將一些資料庫快取到Redis中,擴容節點分散儲存。
  4. 新增本地快取。
  5. 削峰,將一些封必要的寫入操作,使用Kafka削峰,延遲寫入。
  6. 優化Tomcat配置
  7. 優化資料庫連線池配置
  8. 優化JVM引數,調整GC配置
  9. 調整流量報警監控。
  10. 調整自動擴容機制。

 

最終結果:

  MySQL 32C64G 1主10從。 例項POD,2C4G * 60臺支援5WQPS