代码检查CheckList
数据库
表结构设计
索引
SQL优化
SQL性能
数据管理
前台
应用层
业务
- 避免在循环调用数据库、RPC
- 频繁读写同一行数据
- 避免长事务。例如在对数据库进行操作的过程中,进行多次外部接口的调用。 由于事务持续时间延长,事务对相关资源的锁定时间也相应增加,从而可能严重增加了并发冲突,影响到系统吞吐率和可伸缩性。
- 避免大量的数据导出。
- 算法优化。
- 关键业务处理失败,保存失败的数据,并自动进行补偿。
- 控制资源的使用,例如从数据库、文件中加载大量内容到内存中。
- 使用线程池,杜绝无限制的创建线程
- 确保释放使用的资源,最好在finally里面对使用资源,例如文件进行释放。
- 合理的区分主流程和辅助流程,通过后台异步的方式把例如记录日志之类的辅助流程跟主流程分离。
- 对数据库可以采取批量插入、更新的方式提高系统性能。
- 在while和for循环中,要留意调用代码是否会抛出异常,从而导致整个循环的失败。
远程调用优化
- 合理设置timeout值,不要太长杜绝雪崩
- 远程调用未分页
- 减少远程调用
- 远程调用使用批量接口
- 适当进行重试,并考虑外部系统的压力,重试2-3次进行放弃
数据库连接优化
服务接口
- 读接口未对返回的数据进行限制,例如时间范围进行控制
- 关键业务例如账户扣费是否支持幂等性。
- 服务接口是否需要支持大并发。例如写接口能异步化。
应用环境
JVM优化