nginx rtmp-moduleで長時間配信を目指す ack_windowの調整

エンコーダ|⇒LAN⇒|nginx rtmp1| ⇒Internet⇒ |nginx rtmp2| ⇒|クライアント

という構成で、Pushで試験する。
注視しているのはrtmp1サーバ。切断されるか?

rtmp1はエンコーダからのデータを3つのサーバへpushするだけ
rtmp {
server {
listen 1935;

access_log logs/rtmp_access.log;

application live {
live on;
push rtmp://sakura.hoge.jp/live/test?user=live&pass=********;
push rtmp://video. hoge.jp/live/test?user=live&pass=********;
push rtmp://a.rtmp.youtube.com/live2/********;
}
}
}

rtmp2サーバは以下2つ どちらも同じack_windowサイズにし、インターネット回線経路での違いも確認する。

さくらのクラウドvmでack_windowを小さくしてみる。デフォルト5000000のところ1/10000に設定。
rtmp {
server {
listen 1935;
ack_window 500;
buflen 30s;
drop_idle_publisher 5s;
publish_notify on;
notify_method get;

access_log logs/rtmp_access.log combined;

application live {
live on;
}
}

Cloudnでは、ack_windowを小さくしてみる。デフォルト5000000のところ1/10000に設定。
rtmp {
server {
listen 1935;
buflen 30s;
publish_notify on;
drop_idle_publisher 5s;
ack_window 500;

access_log logs/rtmp_access.log combined;

application live {
live on;
on_publish http://localhost/publishauth/auth.php;
notify_method get;

on_play http://localhost:8080/on_play;
}
}

エンコーダ設定
ビットレート512kbps
キーフレーム2秒間隔
640×360
FPS20
音声ビットレート 128Kbps

youtueのクリエータツール ライブダッシュボードにてストリームの状態を確認すると
「音声ストリームの現在のビットレート(154.00Kbps)が推奨値より高くなっています。ストリームのビットレートは128Kbpsを使用する事をお勧めします」
と書いてあった。

結果
さくら 4回切断
Cloudn 3回切断
youtube 5回切断

やはり送り手側のプロバイダがOCNなので、若干Cloudnの方が有利になるのか?
だけど、切断する事には変わりがない。

2017/01/19 15:48:30 [info] 2394#0: *2 disconnect, client: sakura.hanako.jp/live/test?user=live&pass=*********, server: ngx-relay
2017/01/19 15:48:30 [debug] 2394#0: *2 relay: play disconnect app=’live’ name=’test’
2017/01/19 15:48:30 [debug] 2394#0: *2 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/19 17:12:11 [info] 2394#0: *4 disconnect, client: a.rtmp.youtube.com/live2/********, server: ngx-relay
2017/01/19 17:12:11 [debug] 2394#0: *4 relay: play disconnect app=’live2′ name=’test’
2017/01/19 17:12:11 [debug] 2394#0: *4 relay: play left after disconnect app=’live2′ name=’test’: 2
2017/01/19 18:49:29 [info] 2394#0: *5 disconnect, client: sakura.hanako.jp/live/test?user=live&pass=*********, server: ngx-relay
2017/01/19 18:49:29 [debug] 2394#0: *5 relay: play disconnect app=’live’ name=’test’
2017/01/19 18:49:29 [debug] 2394#0: *5 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/19 23:03:54 [info] 2394#0: *6 disconnect, client: a.rtmp.youtube.com/live2/********, server: ngx-relay
2017/01/19 23:03:54 [debug] 2394#0: *6 relay: play disconnect app=’live2′ name=’test’
2017/01/19 23:03:54 [debug] 2394#0: *6 relay: play left after disconnect app=’live2′ name=’test’: 2
2017/01/19 23:23:54 [info] 2394#0: *8 disconnect, client: a.rtmp.youtube.com/live2/********, server: ngx-relay
2017/01/19 23:23:54 [debug] 2394#0: *8 relay: play disconnect app=’live2′ name=’test’
2017/01/19 23:23:54 [debug] 2394#0: *8 relay: play left after disconnect app=’live2′ name=’test’: 2
2017/01/20 00:19:22 [info] 2394#0: *3 disconnect, client: video.hanako.jp/live/test?user=live&pass=*********, server: ngx-relay
2017/01/20 00:19:22 [debug] 2394#0: *3 relay: play disconnect app=’live’ name=’test’
2017/01/20 00:19:22 [debug] 2394#0: *3 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/20 04:21:03 [info] 2394#0: *9 disconnect, client: a.rtmp.youtube.com/live2/********, server: ngx-relay
2017/01/20 04:21:03 [debug] 2394#0: *9 relay: play disconnect app=’live2′ name=’test’
2017/01/20 04:21:03 [debug] 2394#0: *9 relay: play left after disconnect app=’live2′ name=’test’: 2
2017/01/20 04:53:40 [info] 2394#0: *7 disconnect, client: sakura.hanako.jp/live/test?user=live&pass=*********, server: ngx-relay
2017/01/20 04:53:40 [debug] 2394#0: *7 relay: play disconnect app=’live’ name=’test’
2017/01/20 04:53:40 [debug] 2394#0: *7 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/20 05:22:17 [info] 2394#0: *11 disconnect, client: a.rtmp.youtube.com/live2/********, server: ngx-relay
2017/01/20 05:22:17 [debug] 2394#0: *11 relay: play disconnect app=’live2′ name=’test’
2017/01/20 05:22:17 [debug] 2394#0: *11 relay: play left after disconnect app=’live2′ name=’test’: 2
2017/01/20 06:13:38 [info] 2394#0: *10 disconnect, client: video.hanako.jp/live/test?user=live&pass=*********, server: ngx-relay
2017/01/20 06:13:38 [debug] 2394#0: *10 relay: play disconnect app=’live’ name=’test’
2017/01/20 06:13:38 [debug] 2394#0: *10 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/20 11:11:29 [info] 2394#0: *14 disconnect, client: video.hanako.jp/live/test?user=live&pass=*********, server: ngx-relay
2017/01/20 11:11:29 [debug] 2394#0: *14 relay: play disconnect app=’live’ name=’test’
2017/01/20 11:11:29 [debug] 2394#0: *14 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/20 11:11:29 [info] 2394#0: *12 disconnect, client: sakura.hanako.jp/live/test?user=live&pass=*********, server: ngx-relay
2017/01/20 11:11:29 [debug] 2394#0: *12 relay: play disconnect app=’live’ name=’test’
2017/01/20 11:11:29 [debug] 2394#0: *12 relay: play left after disconnect app=’live’ name=’test’: 1