一次直播卡顿问题排查处理记录
- 一、直播数据流
- 二、卡顿现象:
- 三、排查思路:
- 推流端(发布端)
- 自建流媒体/CDN
- 拉流端(观看端)
- 模拟推拉流测试
- 四、排查过程:
- 1. 排查服务器端
- 1.1 服务器硬件性能
- 1.2 服务器网络
- 1.2.1 iperf测试
- 1.2.2 wget
- 1.2.3 停掉流媒体程序,iperf监听在流媒体端口,排除端口限速
- 2. 排查播放端
- 2.1 用vlc播放流地址,查看卡顿现象
- 2.2 www.speedtest.cn测试带宽
- 2.3 查看CPU,内存使用率,不高
- 3. 模拟推拉流测试
- 3.1 使用ffmpeg推流
- 3.2 OBS推流
- 再次查看流媒体日志(看日志不仔细,第一次看日志只关注了ERROR相关,漏掉了其他信息)
问题来了: 收到用户反馈观看直播卡顿
一、直播数据流
推流端(发布端)---自建流媒体/CDN---拉流端(观看端)
出现卡顿,三个端都有出问题的可能
二、卡顿现象:
画面明显感觉到不流畅,偶尔一个画面卡住1~3秒或卡住一会才会继续播放
三、排查思路:
推流端(发布端)
网络质量(上行带宽)
硬件性能
自建流媒体/CDN
网络质量(上下行带宽)
硬件性能
拉流端(观看端)
网络质量(下行带宽)
硬件性能
模拟推拉流测试
四、排查过程:
因为无法远程发布端电脑,所以我先从服务器开始排查的。
1. 排查服务器端
1.1 服务器硬件性能
首先登陆直播服务器,查看系统硬件资源使用情况
cpu: top
内存: free -h
带宽: dstat
磁盘io: iotop, iostat
CPU,内存使用率不高,磁盘io也没有出现排队,出入带宽也不大,在10Mb左右
排除服务器硬件性能问题
1.2 服务器网络
1.2.1 iperf测试
准备一台测试服务器,安装好iperf
①. 流媒体服务器当server,测试服务器当client
②. 流媒体当client,测试服务器当server
上下行带宽在100Mb以上
1.2.2 wget
wget下载一个大的文件,查看下载速度
每秒在6~8MB/s
1.2.3 停掉流媒体程序,iperf监听在流媒体端口,排除端口限速
iperf -s -p 1935
iperf -c ip -p 1935
排除服务器网络不足问题
2. 排查播放端
2.1 用vlc播放流地址,查看卡顿现象
查看流媒体当前最新的一条流id,用vlc播放,发现卡顿严重
2.2 www.speedtest.cn测试带宽
发现下载带宽在20-30 Mb左右,满足观看直播所需要的带宽
排除观看端网络不足问题
2.3 查看CPU,内存使用率,不高
排除服务器网络不足问题
3. 模拟推拉流测试
3.1 使用ffmpeg推流
fmpeg -re -i 02.flv -vcodec copy -acodec copy -f flv -y rtmp://ip:1935/live/789
3.2 OBS推流
用以上两种方式推流时,用vlc测试播放,发现有卡顿现象,再次确认跟网络,硬件性能无关
再次查看流媒体日志(看日志不仔细,第一次看日志只关注了ERROR相关,漏掉了其他信息)
再次查看日志的时候,发现status: data not enough, fps: need(32,30) recv(10,11), rate:3775, speed:980错误,收到的数据不足
查看流媒体服务版本,是老版本,进行升级
升级完程序版本后,再进行测试推拉流,发现观看流畅,没有明显卡顿。
日志中也没有看到data not enough错误
参考链接
https://www.cnblogs.com/qiniu/p/6773045.html