随着Web服务的用户数量增加,他们不可避免地会遇到响应时间慢、服务器崩溃等性能问题。 前端优化固然重要,但负责基础数据处理的后端往往是瓶颈。
本文为首次致力于提高后端性能的工程师提供了实用检查点列表。
🚨 5 个检查点需要检查
如果盲目进行性能调优,效果不会很好。首先检查是否是以下原因造成的。
- **不是出现了N+1问题吗? **
- 使用 O/R 映射器 (ORM) 时,N+1 问题经常会在不知不觉中发生。检索列表数据时,检查查询日志,看看是否发出了一条一条循环遍历相关数据的 SQL。
- **索引是否正确附加? **
- 索引与数据库搜索速度最直接相关。请为搜索条件或排序条件中经常使用的列设置合适的索引(单一索引或复合索引)。
- **您是否有效地使用了缓存? **
- 通过使用Redis或Memcached将经常访问但很少更新的数据(例如主数据)缓存在内存中,可以显着减少数据库的负载。
- **您是否在调用外部API时等待太久? **
- 如果与第三方 API 或其他微服务的通信是同步进程,则该进程将被阻塞。如果可能,请考虑使用异步处理或后台工作程序的设计。
- **是否存在内存泄漏? **
- 如果长时间运行的应用程序性能逐渐下降,则可能怀疑存在内存泄漏。使用探查器调查是否存在任何不必要的对象引用。
🛠️ 没有测量就没有改善
调优时最糟糕的事情就是“通过猜测来修复”。我的“我感觉这里很慢”的直觉常常被证明是错误的。
首先,引入 APM(应用程序性能监控)工具,例如 New Relic 或 Datadog,以数字方式可视化哪些事务和哪些进程(SQL 执行时间、外部通信等)正在花费时间。
💡调整心态
最后要记住的是,并不是所有事情都需要最快。 从维护成本的角度来看,引入复杂的缓存机制来减少每天只执行一次的批处理过程几秒钟通常是不值得的。
确定与用户体验直接相关的关键端点,并将资源集中在这些端点上。这是成为优秀后端工程师的第一步。在日常的发展中要注意“衡量”,一点一点地改进。

