hunting down memory leaks in ruby

20
Hunting down memory leaks Sergey Alekseev

Upload: sergey-alekseev

Post on 22-Jan-2018

794 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Hunting down memory leaks in Ruby

Hunting down memory leaks

Sergey Alekseev

Page 2: Hunting down memory leaks in Ruby

Hunting down memory leaks

Sergey Alekseev

Page 3: Hunting down memory leaks in Ruby

What’s a memory leak?

Page 4: Hunting down memory leaks in Ruby
Page 5: Hunting down memory leaks in Ruby

Bloat vs. Leak

Page 6: Hunting down memory leaks in Ruby
Page 7: Hunting down memory leaks in Ruby

Get rid of a memory bloat first

*disable NewRelic developer_modein staging

Page 8: Hunting down memory leaks in Ruby
Page 9: Hunting down memory leaks in Ruby

How to hunt down a leak?

1) Find

2) Destroy

Page 10: Hunting down memory leaks in Ruby

How to find a leak?

First look into https://github.com/ASoftCo/leaky-

gems

Page 11: Hunting down memory leaks in Ruby

The most effective way

Siege + New Relic + Skylight

Page 12: Hunting down memory leaks in Ruby

/action-1 /action-2

Page 13: Hunting down memory leaks in Ruby

New Relic – Transactions

• Most time consuming

• Slowest average response time

• Apdex most dissatisfying

• …

Page 14: Hunting down memory leaks in Ruby
Page 15: Hunting down memory leaks in Ruby
Page 16: Hunting down memory leaks in Ruby

2 types: Ruby & C memory leaks

Page 17: Hunting down memory leaks in Ruby

Ruby memory leaks

• Errno::ENOMEM

• GC.start

• ObjectSpace.count_objects

• ObjectSpace.each_object(String)

• GC.stat

Page 18: Hunting down memory leaks in Ruby

C memory leaks

• Valgrind

• https://lbtwiki.cern.ch/bin/view/Online/Kcachegrind

• Heap dump

Page 19: Hunting down memory leaks in Ruby
Page 20: Hunting down memory leaks in Ruby

Сергей АлексеевRuby developer, Founder @ ASoft.co

• https://github.com/sergey-alekseev

• info @ asoft.co

• http://sergeyalekseev.by/#contacts