20. Exception
def cycle
invoke
end
def invoke( *arguments )
execute( *arguments )
rescue => error
report_exception(error)
end
def execute( *arguments )
raise NotImplementedError
end
def report_exception(error)
# logging, rollbar, newrelic ...
end
• handleしながら止まらず前進
21. Avoid memory leak
• (rubyの設定で解決できると思うけど)fragmentationが
溜まるので定期的に強制GC
class worker
…
def run
begin
GC.stop
cycle
ensure
GC.start
end
rescue Exception => error
report_exception error
end
…
end
22. Zombi process
• long poling中にdeployを連続すると、zombiができる
serverengine
serverengine.pid
Kill
Kill
1回目
2回目
start
start
polling中
serverengine.pid
Override