hunting performance problems in node.js

53
@dkhan

Upload: daniel-khan

Post on 18-Feb-2017

3.119 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Hunting Performance Problems in Node.js

@dkhan

Page 2: Hunting Performance Problems in Node.js
Page 3: Hunting Performance Problems in Node.js
Page 4: Hunting Performance Problems in Node.js

My Startup

Page 5: Hunting Performance Problems in Node.js

The moment that you find out about a problem …

Page 6: Hunting Performance Problems in Node.js

What is Node.js?

Page 7: Hunting Performance Problems in Node.js

Node.js is a C++ program controlled by V8 JavaScript

Page 8: Hunting Performance Problems in Node.js
Page 9: Hunting Performance Problems in Node.js

Your Code

Node Standard Library

Node Bindings

V8 Thread Pool Event Loop

JavaScript

C++

Page 10: Hunting Performance Problems in Node.js
Page 11: Hunting Performance Problems in Node.js
Page 12: Hunting Performance Problems in Node.js
Page 13: Hunting Performance Problems in Node.js
Page 14: Hunting Performance Problems in Node.js
Page 15: Hunting Performance Problems in Node.js

process.memoryUsage(){ rss: 4935680, heapTotal: 1826816, heapUsed: 650472 }

Page 16: Hunting Performance Problems in Node.js
Page 17: Hunting Performance Problems in Node.js

char * buffer;buffer = (char*) malloc (42);

// Do something with buffer

free (buffer);

Allocate

Deallocate

Page 18: Hunting Performance Problems in Node.js
Page 19: Hunting Performance Problems in Node.js
Page 20: Hunting Performance Problems in Node.js
Page 21: Hunting Performance Problems in Node.js

Scavenge Compact

Page 22: Hunting Performance Problems in Node.js

Mark Sweep

Page 23: Hunting Performance Problems in Node.js

node-gc-profiler

http://bit.ly/1Ll6dhb

Page 24: Hunting Performance Problems in Node.js
Page 25: Hunting Performance Problems in Node.js
Page 26: Hunting Performance Problems in Node.js
Page 27: Hunting Performance Problems in Node.js
Page 28: Hunting Performance Problems in Node.js
Page 29: Hunting Performance Problems in Node.js
Page 30: Hunting Performance Problems in Node.js
Page 31: Hunting Performance Problems in Node.js
Page 32: Hunting Performance Problems in Node.js

This is where I’ll spend my weekend

Page 33: Hunting Performance Problems in Node.js

http://bit.ly/1PvijIy

var snap = profiler.takeSnapshot();snap.serialize();

v8-profiler

Page 34: Hunting Performance Problems in Node.js

theThing = null;

Page 35: Hunting Performance Problems in Node.js

Delta

Page 36: Hunting Performance Problems in Node.js
Page 37: Hunting Performance Problems in Node.js
Page 38: Hunting Performance Problems in Node.js
Page 39: Hunting Performance Problems in Node.js
Page 40: Hunting Performance Problems in Node.js

calculateFibonacci();

Page 41: Hunting Performance Problems in Node.js
Page 42: Hunting Performance Problems in Node.js

http://bit.ly/1jQMbBR

profiler.startProfiling(id); profiler.stopProfiling(id);

v8-profiler

Page 43: Hunting Performance Problems in Node.js
Page 44: Hunting Performance Problems in Node.js
Page 45: Hunting Performance Problems in Node.js
Page 46: Hunting Performance Problems in Node.js
Page 47: Hunting Performance Problems in Node.js
Page 48: Hunting Performance Problems in Node.js
Page 49: Hunting Performance Problems in Node.js

NODE_ENV=productionNODE_ENV=development

Blog: http://bit.ly/1flz0Xm

Page 50: Hunting Performance Problems in Node.js

Let’s put this all together

Process v8-profiler

Memory Usage Heap Dumps

CPU Dumps

Chrome Developer Tools

Your Monitoring Dashboard

Trigger

Page 51: Hunting Performance Problems in Node.js

• ab –c 5 –n 10000 https://yoursite.com• JMeter• Keynote• http://bit.ly/1NkX1Ku

Do load testing!

Page 52: Hunting Performance Problems in Node.js

Slides? Blog!? Tweets?!!1

Page 53: Hunting Performance Problems in Node.js

Daniel Khan

@dkhan

http://apmblog.dynatrace.com/author/daniel-khan/

Thank you!