性能优化
一 性能优化
1.1 性能优化手段
性能优化的入手点:
- CPU性能优化
- 内存性能优化
- 使用火焰图进行优化
- 性能优化实例剖析
- Go中锁竞争维度的优化
常见性能优化手段:
- 尽可能减少HTTP请求,比如合并css,使用精灵图
- 使用CDN系统,实现就近访问
- 启用gzip压缩,降低网页传输大小
- 优化后端api服务性能(查找哪些哪些地方占用了过多资源)
当pprof开启后,每隔一段时间(10ms)收集当前堆栈信息,获取各个函数占用的cpu以及内存资源,当pprof完成之后,通过对这些数据进行分析,性能一个性能分析报告。
1.2 生成测试数据
package main
import (
"flag"
"fmt"
"os"
"runtime/pprof"
"time"
)
func logicCode() {
var c chan int
for {
select {
case v := <- c:
fmt.Printf("read from chan, v: %v\n", v)
default:
}
}
}
func main() {
var isCpuPprof bool
flag.BoolVar(&isCpuPprof, "cpu", off, "turn cpu pprof on")
flag.Parse()
if isCpuPprof {
file, err := os.Create("C:/temp/cpu.pprof")
if err != nil {
fmt.Printf("create cpu pprof failed, err:%v \n", err)
return
}
pprof.StartCPUProfile(file)
defer pprof.StopCPUProfile()
}
for i := 0; i < 8; i++ {
go logicCode()
}
time.Sleep(30 * time.Second)
}