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を受信した
映像配信がこのおかげで止まってしまった。
こちらを参考にして、
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サイズを大きくすることでメモリ量などリソースを消費してしまうのではないか気になった。
top - 14:44:59 up 8 days, 21 min, 2 users, load average: 2.24, 1.37, 0.63 Tasks: 137 total, 2 running, 135 sleeping, 0 stopped, 0 zombie %Cpu(s): 19.7 us, 0.5 sy, 10.9 ni, 68.4 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem: 4016292 total, 2920708 used, 1095584 free, 237308 buffers KiB Swap: 8301564 total, 66616 used, 8234948 free. 2190592 cached Mem
まだメモリには1GBの空きがあるため、特に問題にはならなそうだ。