yayugu / net-radio-archive

MIT License
188 stars 29 forks source link

rec_one 録音タスクのマルチスレッド化 #31

Closed warpzone closed 8 years ago

warpzone commented 8 years ago

いまの main:rec_one は、1回の起動につき 1チャンネルの録音タスクしか起動しない && 起動される のは番組開始 5分前~2分後の 7回なので、同時刻に複数のチャンネルで番組がはじまると、最大でも 7チャンネルしか同時に録音できません。

そこで、1回の起動で必要な分のタスクを一気にマルチスレッドで起動するようにしてみました。 A&G + Radiko + らじるらじる の計 17チャンネルで同時刻に番組が始まっても録音できるように なります…が、私が動かしているメモリ 1GB の VPS ではときどきメモリ不足になったので、database.yml の コネクションプール数を 2 に落としたところ、まあまあ安定して録音できるようになった気がします。

それでもときどき rtmpdump が落ちるので、落ちた時には番組終了時間まで繰り返しリトライをかけるように しようかな…?と思っています。

yayugu commented 8 years ago

ありがとございます!!

わりと大きな変更ですので手元で動かして何日か様子を見てからmergeさせていただきたいと思います。

warpzone commented 8 years ago

プルリクしてからこちらでも全チャンネル録画をし続けてきましたが、始めた当初はおおむね問題 なかった Radiko の録音が、最近ではほぼ失敗するようになってきました。

A&G や らじるらじるではあまり問題が出てないので、Radiko は同時接続・接続時間に 厳しいんですかね…。そちらの環境ではどうですか?

失敗するときは、rtmpdump は

ERROR: RTMP_ReadPacket, failed to read RTMP packet header. type: 46

とか

ERROR: RTMP_ReadPacket, failed to read RTMP packet body. len: 274

というエラーを吐くことが多いです。

yayugu commented 8 years ago

こちらは問題なさそう。 (Radikoは2chだけ)

A&G や らじるらじるではあまり問題が出てないので、Radiko は同時接続・接続時間に 厳しいんですかね…。

単純にRadikoはチャンネル数多いので、 banされたとかじゃないですかね。

以前はそれの対策も兼ねて複数台で分散して録音できるシステムにしようとしてたけど、

そこまでしなくてもIPが異なるサーバー複数台でチャンネルを分けて録ればいいんじゃないかという気がする。

yayugu commented 8 years ago

ということでmergeしました