关于压测pprof优化记录

map主动释放

 问题:底层的数据对比使用了过多的临时map,当并发用户过多的时候,导致GC的处理压力过大,不能及时的释放内存,导致内存持续的升高
 解决:通过使用map池,防止频繁的创建map,然后使用玩临时map后defer主动释放,能够及时的释放map

GC触发调整

 //GC优化 触发收集的目标百分比定为 5倍于原先体积
 debug.SetGCPercent(500)

用户内存释放时间间隔调整

 用户下线后的驻留时间过长,导致内存用户数据持续升高,通过调整释放时间间隔找到合理的时间间隔

正则使用导致cpu过高,替换成其他方式

 问题:底层字符串的转换使用的正则去转换驼峰,由于底层会经常的这种转换,当用户量上去后,cpu的压力会持续的上涨,导致服务器的cpu扛不住
 解决:正则转换字符串替换成了strcase.ToSnake(s) 方式能够极大的节省cpu的使用

检查重复计算比较高的地方

 问题:底层的重复字符串转换,重复计算等问题
 解决:通过预加载提前转化或者计算结果,然后缓存起来后续只需要读取。通过只计算一次然后结果缓存等方法减少cpu的使用

Gateway服务的CPU过高

问题:pprof分析CPU发现Gateway生成token的方式使用Sha256和bcrypt加密算法
解决:Sha256和bcrypt加密算法计算过于复杂,对于高并发的场景下很吃CPU,优化替换成了SHA-1 + Base64 编码提升百分之500%性能
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!