webrtc应用上线cpu偏高的问题排查
现象
如上图, 上线后服务全量使用的cpu统计明显增高, 大概在50%左右.
排查
- 比对上一稳定版本和本次版本代码diff, 无异常
- 比对依赖lib版本, 无异常
- 使用perf和FlameGraph 生成火焰图比对两个版本差异. 发现几个问题: 有些调用栈不同, 缺少一些中间函数调用栈; 新版本在音频处理过程中消耗cpu明显增大100%.
- 感觉看火焰图看不出来什么眉目, 突然想起来可能是配置错了? config没有改变, 编译的debug和release倒是没有关注过. 使用release重新编译了一把, cpu降低了下来.
老版本火焰图:
新版本火焰图:
结果
之前没有考虑过O0和O3 对服务的影响有多大, 现在看来, 编译优化还是对线上服务影响很大的. release比 debug版本cpu使用率高50%左右!