CPU问题:
使用pprof
定位cpu
瓶颈:
- 代码逻辑问题,优化算法
- gc问题,使用pprof定位频繁对象分配的代码,使用
sync.Pool
优化
内存问题:
使用pprof
定位大量内存分配的代码
- 是否内存泄露
- 是否
slice
一直扩容 - …
- 影响
gc
的因素是分配的对象数量,而不是内存分配的大小,因此[]Bean
更优于[]*Bean
- 对于频繁分配的对象,应该使用对象池进行复用
- 对于
slice
和map
,尽量进行预分配,防止重复扩容 - 注意
goroutine
的泄露问题 - 避免创建大量
goroutine
,g
结束后并不会被释放,而是加入空闲队列中等待复用 - 注意全局的指针引用
[TODO]