概述
测试单个srs节点的同时推流或拉流的能力。
主机1:
云主机-上海
CPU:Intel(R) Xeon(R) Gold 6161 CPU @ 2.20GHz
MEM:64G
主机2:
云主机-北京
CPU:Intel(R) Xeon(R) Gold 6161 CPU @ 2.20GHz
MEM:64G
测试方法:使用srs自带的srs-bench进行测试。
带宽测试
使用iperf3进行测试:
上海:
1 2 3 4
   | $ iperf3 -s -p 12345 -i 1
  ----------------------------------------------------------- Server listening on 12345
   | 
 
北京:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
   | $ iperf3 -c xxx.xxx.xxx.219 -p12345 -i 1 -t 30 
  [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd [  4]   0.00-1.00   sec  16.0 MBytes   135 Mbits/sec  4174    652 KBytes        [  4]   1.00-2.00   sec  21.2 MBytes   178 Mbits/sec  3352   1011 KBytes        [  4]   2.00-3.00   sec  26.2 MBytes   220 Mbits/sec  1293   5.66 KBytes        [  4]   3.00-4.00   sec  45.0 MBytes   378 Mbits/sec  1368   2.62 MBytes        [  4]   4.00-5.00   sec  25.0 MBytes   210 Mbits/sec  2496   1.96 MBytes        [  4]   5.00-6.00   sec  42.5 MBytes   357 Mbits/sec  1203   2.60 MBytes        [  4]   6.00-7.00   sec  33.8 MBytes   283 Mbits/sec  2117    990 KBytes        [  4]   7.00-8.00   sec  33.8 MBytes   283 Mbits/sec    0   1.02 MBytes        [  4]   8.00-9.00   sec  35.0 MBytes   294 Mbits/sec   13    824 KBytes        [  4]   9.00-10.00  sec  27.5 MBytes   231 Mbits/sec   63    860 KBytes        [  4]  10.00-11.00  sec  31.2 MBytes   262 Mbits/sec    0    940 KBytes        [  4]  11.00-12.00  sec  31.2 MBytes   262 Mbits/sec    0    998 KBytes        [  4]  12.00-13.00  sec  35.0 MBytes   294 Mbits/sec    0   1.01 MBytes        [  4]  13.00-14.00  sec  35.0 MBytes   294 Mbits/sec    0   1.04 MBytes        [  4]  14.00-15.00  sec  35.0 MBytes   294 Mbits/sec    0   1.05 MBytes        [  4]  15.00-16.00  sec  36.2 MBytes   304 Mbits/sec    1   1.07 MBytes        [  4]  16.00-17.00  sec  37.5 MBytes   315 Mbits/sec    0   1.10 MBytes        [  4]  17.00-18.00  sec  38.8 MBytes   325 Mbits/sec    0   1.13 MBytes        [  4]  18.00-19.00  sec  30.0 MBytes   252 Mbits/sec   96    894 KBytes        [  4]  19.00-20.00  sec  30.0 MBytes   252 Mbits/sec    1    932 KBytes        [  4]  20.00-21.00  sec  31.2 MBytes   262 Mbits/sec    0    956 KBytes        [  4]  21.00-22.00  sec  32.5 MBytes   273 Mbits/sec    0    983 KBytes        [  4]  22.00-23.00  sec  32.5 MBytes   273 Mbits/sec    0   1008 KBytes        [  4]  23.00-24.00  sec  35.0 MBytes   294 Mbits/sec    0   1.01 MBytes        [  4]  24.00-25.00  sec  35.0 MBytes   294 Mbits/sec    0   1.03 MBytes        [  4]  25.00-26.00  sec  36.2 MBytes   304 Mbits/sec    0   1.06 MBytes        [  4]  26.00-27.00  sec  37.5 MBytes   315 Mbits/sec    0   1.15 MBytes        [  4]  27.00-28.00  sec  41.2 MBytes   346 Mbits/sec    0   1.27 MBytes        [  4]  28.00-29.00  sec  32.5 MBytes   273 Mbits/sec  226   1018 KBytes        [  4]  29.00-30.00  sec  36.2 MBytes   304 Mbits/sec    0   1.09 MBytes        - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval           Transfer     Bandwidth       Retr [  4]   0.00-30.00  sec   996 MBytes   279 Mbits/sec  16403             sender [  4]   0.00-30.00  sec   993 MBytes   278 Mbits/sec                  receiver
  iperf Done.
   | 
北京:
1 2 3 4
   | $ iperf3 -s -p 12345 -i 1
  ----------------------------------------------------------- Server listening on 12345
   | 
 
上海:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
   | $ iperf3 -c xxx.xxx.xxx.103 -p12345 -i 1 -t 30
  [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd [  4]   0.00-1.00   sec  1.48 MBytes  12.4 Mbits/sec    1   56.6 KBytes        [  4]   1.00-2.00   sec  2.49 MBytes  20.9 Mbits/sec    1   80.6 KBytes        [  4]   2.00-3.00   sec  3.48 MBytes  29.2 Mbits/sec    1    106 KBytes        [  4]   3.00-4.00   sec  4.29 MBytes  36.0 Mbits/sec    1    130 KBytes        [  4]   4.00-5.00   sec  4.91 MBytes  41.2 Mbits/sec    0    157 KBytes        [  4]   5.00-6.00   sec  6.46 MBytes  54.2 Mbits/sec    0    184 KBytes        [  4]   6.00-7.00   sec  6.84 MBytes  57.3 Mbits/sec    0    212 KBytes        [  4]   7.00-8.00   sec  8.20 MBytes  68.8 Mbits/sec    0    238 KBytes        [  4]   8.00-9.00   sec  8.76 MBytes  73.5 Mbits/sec    0    266 KBytes        [  4]   9.00-10.00  sec  9.82 MBytes  82.4 Mbits/sec    0    293 KBytes        [  4]  10.00-11.00  sec  11.7 MBytes  98.0 Mbits/sec    0    356 KBytes        [  4]  11.00-12.00  sec  14.4 MBytes   120 Mbits/sec    0    467 KBytes        [  4]  12.00-13.00  sec  19.8 MBytes   166 Mbits/sec    0    602 KBytes        [  4]  13.00-14.00  sec  23.8 MBytes   199 Mbits/sec    0    772 KBytes        [  4]  14.00-15.00  sec  30.0 MBytes   252 Mbits/sec    0    977 KBytes        [  4]  15.00-16.00  sec  37.5 MBytes   315 Mbits/sec    1   1.06 MBytes        [  4]  16.00-17.00  sec  38.8 MBytes   325 Mbits/sec    0   1.09 MBytes        [  4]  17.00-18.00  sec  40.0 MBytes   336 Mbits/sec    0   1.11 MBytes        [  4]  18.00-19.00  sec  36.2 MBytes   304 Mbits/sec  152    846 KBytes        [  4]  19.00-20.00  sec  31.2 MBytes   262 Mbits/sec    4    911 KBytes        [  4]  20.00-21.00  sec  31.2 MBytes   262 Mbits/sec    0    938 KBytes        [  4]  21.00-22.00  sec  33.8 MBytes   283 Mbits/sec    0    964 KBytes        [  4]  22.00-23.00  sec  33.8 MBytes   283 Mbits/sec    0    991 KBytes        [  4]  23.00-24.00  sec  35.0 MBytes   294 Mbits/sec    0   1018 KBytes        [  4]  24.00-25.00  sec  37.5 MBytes   315 Mbits/sec    0   1.02 MBytes        [  4]  25.00-26.00  sec  36.2 MBytes   304 Mbits/sec    0   1.05 MBytes        [  4]  26.00-27.00  sec  32.5 MBytes   273 Mbits/sec   82    813 KBytes        [  4]  27.00-28.00  sec  30.0 MBytes   252 Mbits/sec    0    905 KBytes        [  4]  28.00-29.00  sec  33.8 MBytes   283 Mbits/sec    0    973 KBytes        [  4]  29.00-30.00  sec  33.8 MBytes   283 Mbits/sec    0   1022 KBytes        - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval           Transfer     Bandwidth       Retr [  4]   0.00-30.00  sec   678 MBytes   189 Mbits/sec  243             sender [  4]   0.00-30.00  sec   676 MBytes   189 Mbits/sec                  receiver
  iperf Done.
   | 
 
可以看到TCP稳定时,大概是300M的带宽。
rtmp推流测试
在北京起一个srs服务器,从上海使用srs-bench推流过去。
这里srs服务器和srs-bench都是单核运行的,为了保证srs-bench不会先达到cpu上限,使用两个srs-bench进程来推流。
先推750路流:
1 2 3 4 5 6 7 8 9 10 11
   | $ ./objs/sb_rtmp_publish -i doc/source.200kbps.768x320.flv -c 750 -s 10 -r rtmp://xxx.xxx.xxx.103:2019/live/livestream_{i}?vhost=long.test.com
  [2019-10-27 15:58:55.938] [report] [16398] threads:750 alive:750 duration:30 tduration:0 nread:0.79 nwrite:137.69 tasks:750 etasks:0 stasks:0 estasks:0 [2019-10-27 15:59:25.938] [report] [16398] threads:750 alive:750 duration:60 tduration:0 nread:0.39 nwrite:163.65 tasks:750 etasks:0 stasks:0 estasks:0 [2019-10-27 15:59:55.938] [report] [16398] threads:750 alive:750 duration:90 tduration:0 nread:0.26 nwrite:164.61 tasks:750 etasks:0 stasks:0 estasks:0 [2019-10-27 16:00:25.938] [report] [16398] threads:750 alive:750 duration:120 tduration:0 nread:0.20 nwrite:172.49 tasks:750 etasks:0 stasks:0 estasks:0 [2019-10-27 16:00:55.938] [report] [16398] threads:750 alive:750 duration:150 tduration:0 nread:0.16 nwrite:174.96 tasks:750 etasks:0 stasks:0 estasks:0 [2019-10-27 16:01:25.938] [report] [16398] threads:750 alive:750 duration:180 tduration:0 nread:0.13 nwrite:179.18 tasks:750 etasks:0 stasks:0 estasks:0 [2019-10-27 16:01:55.938] [report] [16398] threads:750 alive:750 duration:210 tduration:0 nread:0.11 nwrite:184.73 tasks:750 etasks:0 stasks:0 estasks:0 [2019-10-27 16:02:25.938] [report] [16398] threads:750 alive:750 duration:240 tduration:0 nread:0.10 nwrite:182.79 tasks:750 etasks:0 stasks:0 estasks:0 [2019-10-27 16:02:55.939] [report] [16398] threads:750 alive:750 duration:270 tduration:0 nread:0.09 nwrite:183.50 tasks:750 etasks:0 stasks:0 estasks:0
  | 
 
观察服务器cpu占用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | $ top
  top - 15:57:51 up 243 days,  1:29,  4 users,  load average: 0.35, 0.16, 0.10 Tasks: 212 total,   2 running, 210 sleeping,   0 stopped,   0 zombie %Cpu(s):  2.2 us,  0.5 sy,  0.0 ni, 96.7 id,  0.0 wa,  0.0 hi,  0.6 si,  0.0 st KiB Mem : 65807864 total,  2352216 free,  1588392 used, 61867256 buff/cache KiB Swap:  4194300 total,  4192468 free,     1832 used. 61573296 avail Mem 
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND          9548 root      20   0  639468 318264   1924 R  50.5  0.5  22:03.87 srs              9554 root      20   0  437456 221308   1928 S  15.6  0.3  11:34.34 srs                10 root      20   0       0      0      0 S   0.3  0.0 236:57.63 rcu_sched           1 root      20   0  199248   3912   2436 S   0.0  0.0  68:38.96 systemd             2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd            3 root      20   0       0      0      0 S   0.0  0.0   1:33.02 ksoftirqd/0         5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H        6 root      20   0       0      0      0 S   0.0  0.0   0:03.29 kworker/u32:0  
   | 
 
观察服务器IO占用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | $ dstat
  ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw    2   0  97   0   0   1|   0     0 |  24M  730k|   0     0 |  12k 7223    2   0  97   0   0   1|   0     0 |  23M  715k|   0     0 |  11k 7190    2   1  97   0   0   1|   0   112k|  20M  675k|   0     0 |  11k 7399    2   0  97   0   0   1|   0     0 |  21M  684k|   0     0 |  11k 6847    2   0  97   0   0   1|   0     0 |  23M  695k|   0     0 |  11k 7115    2   0  97   0   0   1|   0     0 |  23M  710k|   0     0 |  11k 7168    2   0  97   0   0   1|   0     0 |  24M  714k|   0     0 |  11k 7377    2   1  97   0   0   1|   0     0 |  27M  743k|   0     0 |  12k 6799    2   0  97   0   0   1|   0    24k|  30M  783k|   0     0 |  13k 7247    2   0  97   0   0   1|   0     0 |  33M  813k|   0     0 |  13k 7354    2   1  97   0   0   1|   0     0 |  36M  833k|   0     0 |  14k 8435    2   0  97   0   0   1|   0     0 |  37M  861k|   0     0 |  14k 7925 
   | 
 
再推250路流,增加到1000路流:
1 2 3 4 5
   | $ ./objs/sb_rtmp_publish -i doc/source.200kbps.768x320.flv -c 250 -s 10 -r rtmp://xxx.xxx.xxx.103:2019/live/livestream1_{i}?vhost=long.test.com
  [2019-10-27 16:28:10.008] [report] [16481] threads:250 alive:250 duration:1110 tduration:0 nread:0.01 nwrite:62.53 tasks:262 etasks:12 stasks:0 estasks:0 [2019-10-27 16:28:40.008] [report] [16481] threads:250 alive:250 duration:1140 tduration:0 nread:0.01 nwrite:62.37 tasks:262 etasks:12 stasks:0 estasks:0 [2019-10-27 16:29:10.008] [report] [16481] threads:250 alive:250 duration:1170 tduration:0 nread:0.01 nwrite:62.39 tasks:262 etasks:12 stasks:0 estasks:0
  | 
 
观察服务器cpu占用:
1 2 3 4 5 6 7 8 9 10 11 12
   | top - 16:26:27 up 243 days,  1:57,  4 users,  load average: 0.84, 0.73, 0.61 Tasks: 212 total,   1 running, 211 sleeping,   0 stopped,   0 zombie %Cpu(s):  3.0 us,  0.5 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.8 si,  0.0 st KiB Mem : 65807864 total,  2342924 free,  1593668 used, 61871272 buff/cache KiB Swap:  4194300 total,  4192468 free,     1832 used. 61567380 avail Mem 
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND          9548 root      20   0  639468 318264   1924 S  69.4  0.5  39:42.44 srs             15063 root      20   0  155140   5848   4500 S   1.0  0.0   0:00.03 sshd            15065 root      20   0  116496   3088   1648 S   0.7  0.0   0:00.02 bash               10 root      20   0       0      0      0 S   0.3  0.0 237:00.91 rcu_sched          80 root      20   0       0      0      0 S   0.3  0.0 560:22.55 ksoftirqd/14   
   | 
 
观察服务器IO占用:
1 2 3 4 5 6 7 8 9 10 11 12 13
   | ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw    3   0  96   0   0   1|   0     0 |  32M  990k|   0     0 |  14k 5548    3   0  96   0   0   1|   0    20k|  31M  994k|   0     0 |  14k 5763    3   0  96   0   0   1|   0     0 |  32M  986k|   0     0 |  14k 5636    3   0  96   0   0   1|   0     0 |  32M  979k|   0     0 |  14k 5777    3   0  96   0   0   1|   0  8192B|  31M  981k|   0     0 |  14k 5762    4   0  95   0   0   1|   0     0 |  32M  989k|   0     0 |  14k 5615    4   1  95   0   0   1|   0  3008k|  33M 1011k|   0     0 |  15k 5571    3   1  96   0   0   1|   0     0 |  35M 1051k|   0     0 |  15k 5471    3   0  96   0   0   1|   0     0 |  37M 1066k|   0     0 |  15k 5289    3   1  95   0   0   1|  44k 4096B|  38M 1079k|   0     0 |  15k 5712    3   0  96   0   0   1|   0     0 |  39M 1086k|   0     0 |  15k 5389 
   | 
 
增加到1200路流:
1 2 3 4 5
   | $ ./objs/sb_rtmp_publish -i doc/source.200kbps.768x320.flv -c 200 -s 10 -r rtmp://xxx.xxx.xxx.103:2019/live/livestream2_{i}?vhost=long.test.com
  [2019-10-27 16:33:21.150] [report] [16689] threads:200 alive:199 duration:60 tduration:0 nread:0.11 nwrite:39.88 tasks:208 etasks:9 stasks:0 estasks:0 [2019-10-27 16:33:51.150] [report] [16689] threads:200 alive:200 duration:90 tduration:0 nread:0.08 nwrite:41.05 tasks:219 etasks:19 stasks:0 estasks:0 [2019-10-27 16:34:21.150] [report] [16689] threads:200 alive:200 duration:120 tduration:0 nread:0.06 nwrite:42.49 tasks:219 etasks:19 stasks:0 estasks:0
  | 
 
观察服务器cpu占用:
1 2 3 4 5 6 7 8 9 10 11 12
   | top - 16:32:01 up 243 days,  2:03,  4 users,  load average: 0.98, 0.85, 0.68 Tasks: 213 total,   2 running, 211 sleeping,   0 stopped,   0 zombie %Cpu(s):  3.5 us,  0.5 sy,  0.0 ni, 95.1 id,  0.0 wa,  0.0 hi,  0.9 si,  0.0 st KiB Mem : 65807864 total,  2326480 free,  1607988 used, 61873396 buff/cache KiB Swap:  4194300 total,  4192468 free,     1832 used. 61551888 avail Mem 
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND          9548 root      20   0  675468 321256   1924 R  88.4  0.5  44:02.00 srs                10 root      20   0       0      0      0 S   0.3  0.0 237:01.58 rcu_sched        1060 root      20   0   20.1g 421956  13468 S   0.3  0.6 308:47.03 java             5359 root      20   0  112800   4328   3300 S   0.3  0.0   9:57.35 sshd             6052 root      20   0   13220    796    592 S   0.3  0.0 238:27.05 rngd            
   | 
 
观察服务器IO占用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw    3   1  95   0   0   1|   0     0 |  35M 1218k|   0     0 |  16k 3206    3   0  95   0   0   1|   0     0 |  35M 1235k|   0     0 |  17k 3217    3   1  95   0   0   1|   0     0 |  35M 1224k|   0     0 |  17k 3194    4   0  95   0   0   1|   0     0 |  35M 1216k|   0     0 |  17k 3381    4   1  95   0   0   1|   0    52k|  35M 1223k|   0     0 |  17k 3177    4   1  95   0   0   1|   0     0 |  35M 1247k|   0     0 |  17k 3289    4   0  95   0   0   1|   0     0 |  35M 1218k|   0     0 |  17k 3346    3   0  95   0   0   1|   0     0 |  35M 1229k|   0     0 |  17k 3093    4   1  95   0   0   1|   0     0 |  35M 1207k|   0     0 |  17k 3226    3   0  95   0   0   1|   0    60k|  35M 1238k|   0     0 |  17k 3097    4   0  95   0   0   1|   0  8192B|  35M 1209k|   0     0 |  17k 3612    3   1  95   0   0   1|   0     0 |  35M 1219k|   0     0 |  16k 3216 
   | 
 
结论:在推送200kbps的流的情况下,大概在1000路推流时,带宽首先被占满,CPU在70%左右。
rtmp拉流测试
先推一路流上去:
1
   | $ ./objs/sb_rtmp_publish -i doc/source.200kbps.768x320.flv -c 1 -s 10 -r rtmp://xxx.xxx.xxx.103:2019/live/livestream?vhost=long.test.com
   | 
 
直接拉1000路流::
1 2 3 4
   | $ ./objs/sb_rtmp_load -c 1000 -s 10 -r rtmp://xxx.xxx.xxx.103:2019/live/livestream?vhost=long.test.com
  [2019-10-27 16:42:00.428] [report] [16756] threads:1000 alive:1000 duration:30 tduration:0 nread:172.40 nwrite:0.93 tasks:1000 etasks:0 stasks:0 estasks:0 [2019-10-27 16:42:30.428] [report] [16756] threads:1000 alive:1000 duration:60 tduration:0 nread:212.69 nwrite:0.46 tasks:1000 etasks:0 stasks:0 estasks:0
   | 
 
观察服务器cpu占用:
1 2 3 4 5 6 7 8 9 10 11 12 13
   | top - 16:40:27 up 243 days,  2:11,  4 users,  load average: 0.14, 0.42, 0.56 Tasks: 213 total,   2 running, 211 sleeping,   0 stopped,   0 zombie %Cpu(s):  0.5 us,  0.3 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.7 si,  0.0 st KiB Mem : 65807864 total,  2276144 free,  1648396 used, 61883324 buff/cache KiB Swap:  4194300 total,  4192468 free,     1832 used. 61505084 avail Mem 
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND          9548 root      20   0  675468 321276   1944 R  13.6  0.5  47:13.14 srs              6572 root      20   0 1949000  44236  14768 S   1.7  0.1 955:10.49 containerd       4921 root      20   0   24576   8708   2380 S   0.3  0.0  85:26.68 srs              6052 root      20   0   13220    796    592 S   0.3  0.0 238:28.16 rngd                1 root      20   0  199248   3912   2436 S   0.0  0.0  68:39.47 systemd             2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd       
   | 
 
观察服务器IO占用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
   | ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw    0   0  99   0   0   1|   0     0 |1309k   46M|   0     0 |  14k  880    1   0  98   0   0   1|   0     0 |1312k   45M|   0     0 |  14k  913    0   0  99   0   0   1|   0     0 |1167k   44M|   0     0 |  13k  897    1   0  99   0   0   1|   0     0 |1236k   45M|   0     0 |  12k  810    1   0  99   0   0   1|   0   148k|1309k   47M|   0     0 |  13k  911    0   0  99   0   0   1|   0     0 |1296k   45M|   0     0 |  13k  817    0   0  99   0   0   1|   0     0 |1269k   42M|   0     0 |  13k  843    0   0  99   0   0   1|   0     0 |1195k   44M|   0     0 |  12k  894    0   0  99   0   0   1|   0     0 |1192k   42M|   0     0 |  12k  812    1   0  99   0   0   1|   0    20k|1271k   49M|   0     0 |  12k  795    0   0  99   0   0   1|   0     0 |1243k   41M|   0     0 |  13k  949    1   0  98   0   0   1|   0     0 |1320k   48M|   0     0 |  13k  909    0   0  99   0   0   1|   0     0 |1254k   45M|   0     0 |  13k  858 
   | 
 
结论:在拉取200kbps的流的情况下,大概在1000路拉流时,带宽45MB左右,CPU在13%左右,上限决定于带宽
flv拉流测试
先推一路流上去:
1
   | $ ./objs/sb_rtmp_publish -i doc/source.200kbps.768x320.flv -c 1 -s 10 -r rtmp://xxx.xxx.xxx.103:2019/live/livestream?vhost=long.test.com
   | 
 
直接拉1000路流::
1 2 3 4 5
   | $ ./objs/sb_http_load -c 1000 -s 10 -r http://long.test.com:3019/live/livestream.flv
  [2019-10-27 18:05:31.713] [report] [17375] threads:1000 alive:1000 duration:240 tduration:0 nread:238.23 nwrite:0.00 tasks:1000 etasks:0 stasks:0 estasks:0 [2019-10-27 18:06:01.713] [report] [17375] threads:1000 alive:1000 duration:270 tduration:0 nread:242.30 nwrite:0.00 tasks:1000 etasks:0 stasks:0 estasks:0 [2019-10-27 18:06:31.713] [report] [17375] threads:1000 alive:1000 duration:300 tduration:0 nread:244.52 nwrite:0.00 tasks:1000 etasks:0 stasks:0 estasks:0
   | 
 
观察服务器cpu占用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | top - 18:04:10 up 243 days,  3:35,  4 users,  load average: 0.10, 0.17, 0.13 Tasks: 211 total,   2 running, 209 sleeping,   0 stopped,   0 zombie %Cpu(s):  1.2 us,  0.9 sy,  0.0 ni, 97.1 id,  0.0 wa,  0.0 hi,  0.8 si,  0.0 st KiB Mem : 65807864 total,  2559192 free,  1223956 used, 62024716 buff/cache KiB Swap:  4194300 total,  4192468 free,     1832 used. 61930044 avail Mem 
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND         18700 root      20   0  340136 107528   2000 R  41.5  0.2   3:15.25 srs              6572 root      20   0 1949000  43996  14768 S   1.7  0.1 955:25.07 containerd        966 root      20   0  122040   1492    888 S   0.3  0.0 174:11.47 wrapper          9695 root      20   0  161976   2372   1600 R   0.3  0.0   0:29.07 top                 1 root      20   0  199248   3912   2436 S   0.0  0.0  68:40.50 systemd             2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd            3 root      20   0       0      0      0 S   0.0  0.0   1:33.02 ksoftirqd/0    
   | 
 
观察服务器IO占用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw    1   1  97   0   0   1|   0     0 |1138k   42M|   0     0 |  13k 1447    1   1  97   0   0   1|   0     0 |1121k   42M|   0     0 |  13k 1417    1   1  97   0   0   1|   0     0 |1108k   41M|   0     0 |  13k 1436    1   1  97   0   0   1|   0    28k|1110k   44M|   0     0 |  13k 1381    1   1  97   0   0   1|   0     0 |1150k   44M|   0     0 |  13k 1300    1   1  97   0   0   1|   0     0 |1190k   42M|   0     0 |  13k 1306    1   1  98   0   0   1|   0     0 |1086k   42M|   0     0 |  13k 1320    1   1  98   0   0   1|   0     0 |1186k   44M|   0     0 |  13k 1298    1   1  98   0   0   1|   0    68k|1181k   41M|   0     0 |  14k 1348    1   1  98   0   0   1|   0     0 | 853k   33M|   0     0 |  11k 1255    1   1  98   0   0   0|   0     0 | 812k   37M|   0     0 |  10k 1149    3   1  96   0   0   0|   0     0 | 876k   41M|   0     0 |  11k 1308 
   | 
 
结论:与rtmp类似,在拉取200kbps的流的情况下,大概在1000路拉流时,带宽43MB左右,CPU在41%左右,上限决定于带宽,
但是这里的CPU使用率显然比rtmp高得多。
最后总结
无论是推流还是拉流,实际上的瓶颈都在于带宽。并且在测试中srs实际上只使用了一个CPU核心,实际上还剩余了大量的CPU资源。
由于srs-bench不支持flv推流测试,所以暂时没有对flv推流进行测试。
——————————————————-
2019-11-1补充:局域网测试
上一次测试限于带宽只有300M,导致测试效果是带宽为瓶颈,这里在局域网中进行测试,有更大的带宽。
VM1:192.168.90.40
VM2:192.168.90.45
主机CPU为i7-8700,频率3.2GHz。
带宽测试
VM1:
1 2 3 4 5
   | $ iperf3 -s -p 12345 -i 1
  ----------------------------------------------------------- Server listening on 12345 -----------------------------------------------------------
   | 
 
VM2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | $ iperf3 -c 192.168.90.40 -p12345 -i 1 -t 30
  Connecting to host 192.168.90.40, port 12345 [  4] local 192.168.90.43 port 50380 connected to 192.168.90.40 port 12345 [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd [  4]   0.00-1.00   sec   111 MBytes   932 Mbits/sec    3    402 KBytes        [  4]   1.00-2.00   sec   113 MBytes   948 Mbits/sec    0    581 KBytes        [  4]   2.00-3.00   sec   111 MBytes   934 Mbits/sec    0    713 KBytes        [  4]   3.00-4.00   sec   111 MBytes   933 Mbits/sec    0    826 KBytes        [  4]   4.00-5.00   sec   111 MBytes   933 Mbits/sec    0    923 KBytes        [  4]   5.00-6.00   sec   111 MBytes   933 Mbits/sec    0   1014 KBytes        [  4]   6.00-7.00   sec   111 MBytes   933 Mbits/sec    0   1.07 MBytes        [  4]   7.00-8.00   sec   112 MBytes   944 Mbits/sec    0   1.14 MBytes        [  4]   8.00-9.00   sec   111 MBytes   933 Mbits/sec    0   1.21 MBytes     
   | 
 
可以看到带宽接近千兆。
推拉流测试结果
CPU为i7-8700,频率3.2GHz;带宽933 Mbits/sec。
| 测试项目 | 
单路流大小 | 
推拉流数 | 
CPU使用率 | 
带宽占用    | 
| rtmp推流测试 | 
200kbps | 
4000 | 
100% | 
114M      | 
| rtmp拉流测试 | 
200kbps | 
4000 | 
20%~40% | 
114M      | 
| flv拉流测试 | 
200kbps | 
4000 | 
60%~80% | 
114M      | 
| rtmp推流测试 | 
1000kbps | 
500 | 
40%~50% | 
60M~80M      | 
| rtmp推流测试 | 
1000kbps | 
1000 | 
75%~80% | 
114M      | 
| rtmp拉流测试 | 
1000kbps | 
500 | 
13%~15% | 
60M~80M      | 
| rtmp拉流测试 | 
1000kbps | 
1000 | 
15%~17% | 
114M      | 
| flv拉流测试 | 
1000kbps | 
500 | 
18%~20% | 
60M~80M      | 
| flv拉流测试 | 
1000kbps | 
1000 | 
45%~50% | 
114M      |