优化极简版抖音:提高性能和减少资源占用
项目背景
参加了字节的青训营,学习到了很多,也参加了大项目开发.使用了 Gin 和 GORM 框架来搭建项目,并完成了基本的功能。然而,在运行程序时,我发现其性能并不理想,同时资源占用也较高。因此,我决定对该程序进行优化,以提高其性能并减少资源占用。
实践过程
1. 分析性能问题
在开始优化之前,我首先对程序的性能进行了分析。我使用了 Go 语言内置的 profiler 工具来生成性能剖析报告。通过分析报告,我发现程序在访问数据库时存在较大的性能瓶颈。同时,我还发现程序在启动时会占用大量的 CPU 和内存资源。
2. 使用OSS提高速度
使用OSS来存储视频,速度能提升800%,并且能极大的减少对文件的读取,减少了内存资源的占用
3. 优化数据库访问
为了解决数据库访问的性能问题,我采用了以下几种方法:
- 使用批处理操作来减少数据库请求的次数。例如,我将多个数据库操作合并为一个批处理操作,以减少数据库请求的次数。
- 使用连接池来管理数据库连接。通过使用连接池,我可以确保每个数据库连接在使用完后会被及时地释放,从而减少资源占用。
- 使用缓存来缓存数据库查询结果。通过使用缓存,我可以避免多次重复查询数据库,从而提高性能。
4. 优化启动时的资源占用
为了减少程序启动时的资源占用,我采用了以下几种方法:
- 使用懒加载来延迟加载某些模块。例如,我将一些非必要的模块设置为懒加载模式,以避免在启动时加载过多的模块。
- 使用 Goroutine 来并行处理多个任务。通过使用 Goroutine,我可以同时执行多个任务,从而减少资源占用。
- 使用内存池来管理内存。通过使用内存池,我可以确保每个内存块在使用完后会被及时地释放,从而减少内存占用。
5. 监控系统性能
为了实时监控系统的性能,我使用了 Prometheus 和 Grafana 工具来构建监控系统。通过监控系统的性能指标,我可以及时地发现并解决性能问题。
结果
通过以上优化实践,我成功地提高了极简版抖音的性能,并减少了资源占用。在优化前,程序在启动时会占用大量的 CPU