隨著Web服務的用戶數量增加,他們不可避免地會遇到回應時間慢、伺服器崩潰等效能問題。 前端優化固然重要,但負責基礎資料處理的後端往往是瓶頸。
本文為首次致力於提升後端效能的工程師提供了實用檢查點清單。
🚨 5 個檢查點需要檢查
如果盲目進行效能調優,效果不會很好。首先檢查是否是以下原因造成的。
- **不是出現N+1問題了嗎? **
- 使用 O/R 映射器 (ORM) 時,N+1 問題經常會在不知不覺中發生。檢索清單資料時,檢查查詢日誌,看看是否發出一條循環遍歷相關資料的 SQL。
- **索引是否正確附加? **
- 索引與資料庫搜尋速度最直接相關。請為搜尋條件或排序條件中經常使用的欄位設定適當的索引(單一索引或複合索引)。
- **您是否有效地使用了快取? **
- 透過使用Redis或Memcached將經常存取但很少更新的資料(例如主資料)緩存在記憶體中,可以顯著減少資料庫的負載。
- **您是否在呼叫外部API時等待太久? **
- 如果與第三方 API 或其他微服務的通訊是同步進程,則該進程將被阻塞。如果可能,請考慮使用非同步處理或背景工作程序的設計。
- **是否有記憶體洩漏? **
- 如果長時間運行的應用程式效能逐漸下降,則可能懷疑存在記憶體洩漏。使用探查器調查是否有任何不必要的物件引用。
🛠️ 沒有測量就沒有改善
調優時最糟糕的事情就是「透過猜測來修復」。我的「我感覺這裡很慢」的直覺常常被證明是錯的。
首先,引入 APM(應用程式效能監控)工具,例如 New Relic 或 Datadog,以數位方式視覺化哪些事務和哪些進程(SQL 執行時間、外部通訊等)正在花費時間。
💡調整心態
最後要記住的是,並不是所有事情都需要最快。 從維護成本的角度來看,引入複雜的快取機制來減少每天只執行一次的批次過程幾秒鐘通常是不值得的。
確定與使用者體驗直接相關的關鍵端點,並將資源集中在這些端點上。這是成為優秀後端工程師的第一步。在日常的發展中要注意“衡量”,一點一點地改進。

