admin管理员组

文章数量:1580441

一次直播卡顿问题排查处理记录

  • 一、直播数据流
  • 二、卡顿现象:
  • 三、排查思路:
    • 推流端(发布端)
    • 自建流媒体/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测试带宽
      • 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测试带宽

发现下载带宽在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://wwwblogs/qiniu/p/6773045.html

本文标签: