一、如何发现接口的性能问题?
可以通过压测结合日志的方式去分析接口的瓶颈点,然后去针对性优化。
二、接口性能优化方案
- 数据库优化:《如何排查慢SQL问题?》、《如何进行SQL调优?》
- 引入缓存中间件:对于查询结果一样的请求,为了减少数据库压力,可以考虑引入Redis作为缓存数据库,同时也能提高接口响应速度。(相关文章:《Redis为什么这么快?》)
- 资源复用:可以用一些池化技术减少重复资源创建消耗带来的性能消耗(相关文章:线程池学习笔记)
- 批量操作:减少循环操作(如数据库调用、RPC调用等),如查询100次RPC接口改为查询1次批量查接口,可以减少多余的网络IO消耗,从而提高接口响应速度
- Future机制:采用线程池配合Future机制使用,可以同时并行执行多个高耗时的接口,从而避免同步阻塞的问题
- 锁优化:尽量减少锁粒度和锁持有时间,减少线程竞争导致阻塞问题
- 集群部署:数据库、中间件等可集群化部署,提升性能
- 硬件资源:如果其他优化没有太明显作用的话,可以尝试提升硬件资源配置,如CPU、内存等
- …