28

Профилирование Node.js

Embed Size (px)

Citation preview

Page 1: Профилирование Node.js
Page 2: Профилирование Node.js

Руководитель группы разработки интерфейсов

Профилирование Node.js или как мы разогналисьЧистяков Денис

Page 3: Профилирование Node.js

«Преждевременная оптимизация — корень всех зол»

3 Дональд Кнут

Page 4: Профилирование Node.js

Мало держите

Больше RPS!

Сервера не казенные

Вы какая-то промка Джанга и та

больше держитА если ДЦ упадет?

Page 5: Профилирование Node.js
Page 6: Профилирование Node.js
Page 7: Профилирование Node.js
Page 8: Профилирование Node.js
Page 9: Профилирование Node.js

Сейчас средняя нагрузка за сутки — 80rps (≈7 000 000 просмотров)

9

Page 10: Профилирование Node.js

Для примера на Е1 ≈3 200 000 просмотров

10

Page 11: Профилирование Node.js

Во время коллапсов может подниматься до 800rps

11

Page 12: Профилирование Node.js

Как назвать переменную???

Когда инвалидировать кэш???

Page 13: Профилирование Node.js
Page 14: Профилирование Node.js

Нет удобного инструмента для замера времени выполнения функций

14

Page 15: Профилирование Node.js
Page 16: Профилирование Node.js

С помощью Theseus удобно искать «горячие» места

16

Page 17: Профилирование Node.js

Тормозила функция printf и мы устроили челендж

«Напиши свой printf с блэкджеком»

Page 18: Профилирование Node.js

Максимально избегайте синхронного кода

18

Page 19: Профилирование Node.js

Переносите хождение за общими данными в отдельный процесс

19

Page 20: Профилирование Node.js

Node WebKit Agent

Page 21: Профилирование Node.js

Node WebKit Agent

Page 22: Профилирование Node.js

vm.runInNewContext() vs new Function()

22

Page 23: Профилирование Node.js

node --trace_opt --trace_deopt --allow-natives-syntax test.js

23

Page 24: Профилирование Node.js

try / catch

24

Page 25: Профилирование Node.js

require

25

Page 26: Профилирование Node.js

console.log

26

Page 27: Профилирование Node.js

Кладезь полезных ссылок

• How to debug Node.js applications • The node.js Profiling Guide that Hasn’t Existed • Optimization Killers • Node WebKit Agent • Theseus • microtime

27

Page 28: Профилирование Node.js

Руководитель группы разработки интерфейсов

[email protected] @denchistyakov

Спасибо! Вопросы?

Чистяков Денис