記一次服務優化
阿新 • • 發佈:2022-04-22
最近公司有個專案,再某一次活動時,流量暴增,達到了1萬QPS,因資料庫、服務擴容不及時,停止服務近5分鐘,受影響使用者近20W。所以有了這一次優化。
目標:
1、支援最大40000 QPS
2、能夠及時動態擴縮容。
分析原因:
- 流量在特定時間點暴增達到服務上面,流量來的太突然,沒有提前預警。
- 這個服務之前流量較小,MySQL機器配置較低,無法承受大併發寫入。
- 服務某些介面,沒有接入快取,直接查庫。
優化思路:
- 限流。服務的閘道器層進行限流。
- 資料庫升級配置,主庫配置32C64G(此配置經壓測大約可以支援2QPS的寫),從庫擴容多個節點。
- Redis叢集擴容。將一些資料庫快取到Redis中,擴容節點分散儲存。
- 新增本地快取。
- 削峰,將一些封必要的寫入操作,使用Kafka削峰,延遲寫入。
- 優化Tomcat配置
- 優化資料庫連線池配置
- 優化JVM引數,調整GC配置
- 調整流量報警監控。
- 調整自動擴容機制。
最終結果:
MySQL 32C64G 1主10從。 例項POD,2C4G * 60臺支援5WQPS