Top Banner
Hunting down memory leaks Sergey Alekseev
20

Hunting down memory leaks in Ruby

Jan 22, 2018

Download

Software

Sergey Alekseev
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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