1 参考链接
https://www.jianshu.com/p/6d4a89359352 https://mp.weixin.qq.com/s/r2jn1GAcHe08IeTW32OyuQ https://www.cnblogs.com/zh-dream/p/12777182.html
2 测试
????????srs_bench地址:https://github.com/ossrs/srs-bench/tree/feature/rtc????????
2.1 srs bench推流
????????./srs_bench -pr webrtc://localhost/live/livestream_%d -sa a.ogg -sv v.h264 -fps 25 -sn 1
2.2 srs bench拉流
????????./srs_bench -sr webrtc://localhost/live/livestream_%d -sn 1 -nn 1
3 火焰图和perf
????????火焰图地址: ????????https://github.com/brendangregg/FlameGraph.git
? ? ? ? 火焰图生成步骤:
3.1、第一步
????????perf record -e cpu-clock -g -p 28591 ????????Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data.
3.2、第二步
????????用perf script工具对perf.data进行解析 ????????perf script -i perf.data &> perf.unfold
3.3、第三步
????????将perf.unfold中的符号进行折叠: ????????./FlameGraph/stackcollapse-perf.pl perf.unfold &> perf.folded
3.4、最后生成svg图
????????./FlameGraph/flamegraph.pl perf.folded > perf.svg
4 查看和设置UDP缓冲区长度
4.1 查看
sysctl net.core.rmem_max && sysctl net.core.rmem_default && sysctl net.core.wmem_max && sysctl net.core.wmem_default
4.2 设置缓冲区长度为16MB (16*1024*1024)
sysctl net.core.rmem_max=16777216 sysctl net.core.rmem_default=16777216 sysctl net.core.wmem_max=16777216 sysctl net.core.wmem_default=16777216
5 查看 UDP 接收情况
5.1 方法一
????????watch -d -n1 "cat /proc/net/snmp | grep -i udp"
5.2 方法二
????????watch -d -n1 "netstat -s --udp"
5.3 输出解释
????????packet receive errors 不为空,并且在一直增长说明系统有 UDP 丢包(不增长没有问题,不为零说明之前接收出现过错误)。 ????????packets to unknown port received 表示系统接收到的 UDP 报文所在的目标端口没有应用在监听,一般是服务没有启动导致的,并不会造成严重的问题。 ????????receive buffer errors 表示因为 UDP 的接收缓存太小导致丢包的数量。
6 实时查看运行程序的热点
????????perf top -p pid
7 dstat
????????不加任何参数的时候,网络输入和输出的单位是Byte,如果想修改成bit,需要增加选项 --bits
8 iftop/nload 自己man
|