LoginSignup
15
20

More than 5 years have passed since last update.

rtmpdumpの安定性を向上させる

Posted at

概要

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
15
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
20