概要
gitで開発版(master)の最新をとってきてビルドしましょう
背景
自分は↓のようなツールをつくっていてインターネットラジオだったりニコ生だったりをrtmpdumpで録ったりしているのですが。
rtmpdumpがすごく不安定でCPU100%の暴走状態になったりものすごくメモリを消費したりといったことが多くて困っていた。
対策
ここのgitをcloneしてみたら最近は開発止まってるんですけど、それでも2.4をリリースしたあとにもかなりの量commitがあったことがわかりました。メモリリーク修正commitもあります。
ということでそれをbuildして入れます。
# Linuxの場合
$ git clone git://git.ffmpeg.org/rtmpdump
$ cd rtmpdump
$ make SYS=posix
$ sudo make install
$ sudo ldconfig
結果
かなり安定しました。3日くらい運用してますが暴走したり、ゾンビ化したりするやつが今のところなくなりました。
その他役にたちそうなworkaround
以前から使ってる、一定時間以上起動してるrtmpdumpを殺すやつ
def kill_zombie_process
send_signal_to_zombie_processes(:TERM)
sleep 5
send_signal_to_zombie_processes(:KILL)
end
def send_signal_to_zombie_processes(signal)
pids = (`pgrep 'rtmpdump'`).split("\n").map(&:to_i)
pids.each do |pid|
elapsed_sec = Time.now.to_i - Time.parse(`ps -o lstart --noheader -p #{pid}`).to_i
if (60 * 60 * 25) < elapsed_sec # 24 + 1(margin) hours
Process.kill(signal, pid)
puts "kill pid:#{pid} elapsed_sec:#{elapsed_sec}"
end
end
end