本当に私は懲りないやつ ack_window 1

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/1000000に設定。
rtmp {
server {
listen 1935;
ack_window 1;
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/1000000に設定。
rtmp {
server {
listen 1935;
buflen 30s;
publish_notify on;
drop_idle_publisher 5s;
ack_window 1;

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

24時間稼働の結果
さくらのクラウド 切断2回
youtube 切断3回
cloudn 切断5回

さくらのクラウドでは ack_window 1が最適で、Cloudnではack_window 5が一番良い結果が出た。

root@StreamRouter:/usr/local/nginx/logs# egrep ‘disconnect’ error.log
2017/01/23 16:00:04 [info] 3922#0: *3 disconnect, client: video.hanako.jp/live/test?user=live&pass=***********, server: ngx-relay
2017/01/23 16:00:04 [debug] 3922#0: *3 relay: play disconnect app=’live’ name=’test’
2017/01/23 16:00:04 [debug] 3922#0: *3 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/23 18:04:23 [info] 3922#0: *5 disconnect, client: video.hanako.jp/live/test?user=live&pass=***********, server: ngx-relay
2017/01/23 18:04:23 [debug] 3922#0: *5 relay: play disconnect app=’live’ name=’test’
2017/01/23 18:04:23 [debug] 3922#0: *5 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/23 18:48:56 [info] 3922#0: *4 disconnect, client: a.rtmp.youtube.com/live2/*********, server: ngx-relay
2017/01/23 18:48:56 [debug] 3922#0: *4 relay: play disconnect app=’live2′ name=’test’
2017/01/23 18:48:56 [debug] 3922#0: *4 relay: play left after disconnect app=’live2′ name=’test’: 2
2017/01/23 23:12:38 [info] 3922#0: *2 disconnect, client: sakura.hanako.jp/live/test?user=live&pass=***********, server: ngx-relay
2017/01/23 23:12:38 [debug] 3922#0: *2 relay: play disconnect app=’live’ name=’test’
2017/01/23 23:12:38 [debug] 3922#0: *2 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/23 23:31:14 [info] 3922#0: *7 disconnect, client: a.rtmp.youtube.com/live2/*********, server: ngx-relay
2017/01/23 23:31:14 [debug] 3922#0: *7 relay: play disconnect app=’live2′ name=’test’
2017/01/23 23:31:14 [debug] 3922#0: *7 relay: play left after disconnect app=’live2′ name=’test’: 2
2017/01/24 04:50:28 [info] 3922#0: *6 disconnect, client: video.hanako.jp/live/test?user=live&pass=***********, server: ngx-relay
2017/01/24 04:50:28 [debug] 3922#0: *6 relay: play disconnect app=’live’ name=’test’
2017/01/24 04:50:28 [debug] 3922#0: *6 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/24 05:30:19 [info] 3922#0: *10 disconnect, client: video.hanako.jp/live/test?user=live&pass=***********, server: ngx-relay
2017/01/24 05:30:19 [debug] 3922#0: *10 relay: play disconnect app=’live’ name=’test’
2017/01/24 05:30:19 [debug] 3922#0: *10 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/24 09:13:03 [info] 3922#0: *8 disconnect, client: sakura.hanako.jp/live/test?user=live&pass=***********, server: ngx-relay
2017/01/24 09:13:03 [debug] 3922#0: *8 relay: play disconnect app=’live’ name=’test’
2017/01/24 09:13:03 [debug] 3922#0: *8 relay: play left after disconnect app=’live’ name=’test’: 2
2017/01/24 09:13:03 [info] 3922#0: *11 disconnect, client: video.hanako.jp/live/test?user=live&pass=***********, server: ngx-relay
2017/01/24 09:13:03 [debug] 3922#0: *11 relay: play disconnect app=’live’ name=’test’
2017/01/24 09:13:03 [debug] 3922#0: *11 relay: play left after disconnect app=’live’ name=’test’: 1
2017/01/24 09:51:37 [info] 3922#0: *9 disconnect, client: a.rtmp.youtube.com/live2/*********, server: ngx-relay
2017/01/24 09:51:37 [debug] 3922#0: *9 relay: play disconnect app=’live2′ name=’test’
2017/01/24 09:51:37 [debug] 3922#0: *9 relay: play left after disconnect app=’live2′ name=’test’: 2