rtmp module max_message too big message: 1048576

nginx rtmp-moduleでtoo big message: 1048576 このエラー何だろう。

max_message

syntax: max_queue value
context: rtmp, server

Maximum size of input data message. All input data comes split into messages (and further in chunks). A partial message is kept in memory while waiting for it to complete. In theory incoming message can be very large which can be a problem for server stability. Default value 1M is enough for many cases.

全てのインプットされるデータはmessageに分割されてくる。(さらにchunkに分割される)。分割されたメッセージはそれが完了するまでメモリーに保持される。セオリー的には、messageがとても大きくなるとサーバの安定性の問題につながる。デフォルトは1Mで、だいたいどんなケースでも十分。

max_message 1M;

こんなエラーが出た。

2017/06/04 12:59:31 [info] 17659#0: *31736 too big message: 1048576, client: 192.168.200.73, server: 0.0.0.0:1935
※大きすぎるメッセージ1048576を受信した

映像配信がこのおかげで止まってしまった。

https://obsproject.com/forum/threads/two-streams-from-1-obs-any-ideas.19708/page-2

こちらを参考にして、

max_messageディレクティブを変更してみる

まずは、too big message: 1048576がどんな時にでるのかを確認するため、max_messageサイズをすごく小さくしてみる。

max_message 500;

するとエラーが出た。
2017/06/05 14:34:07 [info] 18688#0: *33 too big message: 500, client: 192.168.200.72, server: 0.0.0.0:1935

思った通り、500以上の大きさのmessageが届くとエラーを吐いて止まるようだ。

なので、

max_message 2500000;

として大きなmessageも受け取れるようにしてみた。特に問題なく、映像配信できているが、ただこのエラーがでるのは頻度がめちゃくちゃ小さい。どのくらいの頻度で起こる問題なのか分からない。

安定の問題につながるとマニュアルに書いてあるので、受け取れるmessageサイズを大きくすることでメモリ量などリソースを消費してしまうのではないか気になった。

 

まだメモリには1GBの空きがあるため、特に問題にはならなそうだ。