Профилирование node.js
TRANSCRIPT
![Page 1: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/1.jpg)
![Page 2: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/2.jpg)
Руководитель группы разработки интерфейсов
Профилирование Node.js или как мы разогналисьЧистяков Денис
![Page 3: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/3.jpg)
«Преждевременная оптимизация — корень всех зол»
3 Дональд Кнут
![Page 4: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/4.jpg)
Мало держите
Больше RPS!
Сервера не казенные
Вы какая-то промка Джанга и та
больше держитА если ДЦ упадет?
![Page 5: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/5.jpg)
![Page 6: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/6.jpg)
![Page 7: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/7.jpg)
![Page 8: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/8.jpg)
![Page 9: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/9.jpg)
Сейчас средняя нагрузка за сутки — 80rps (≈7 000 000 просмотров)
9
![Page 10: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/10.jpg)
Для примера на Е1 ≈3 200 000 просмотров
10
![Page 11: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/11.jpg)
Во время коллапсов может подниматься до 800rps
11
![Page 12: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/12.jpg)
Как назвать переменную???
Когда инвалидировать кэш???
![Page 13: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/13.jpg)
![Page 14: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/14.jpg)
Нет удобного инструмента для замера времени выполнения функций
14
![Page 15: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/15.jpg)
![Page 16: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/16.jpg)
С помощью Theseus удобно искать «горячие» места
16
![Page 17: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/17.jpg)
Тормозила функция printf и мы устроили челендж
«Напиши свой printf с блэкджеком»
![Page 18: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/18.jpg)
Максимально избегайте синхронного кода
18
![Page 19: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/19.jpg)
Переносите хождение за общими данными в отдельный процесс
19
![Page 20: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/20.jpg)
Node WebKit Agent
![Page 21: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/21.jpg)
Node WebKit Agent
![Page 22: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/22.jpg)
vm.runInNewContext() vs new Function()
22
![Page 23: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/23.jpg)
node --trace_opt --trace_deopt --allow-natives-syntax test.js
23
![Page 24: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/24.jpg)
try / catch
24
![Page 25: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/25.jpg)
require
25
![Page 26: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/26.jpg)
console.log
26
![Page 27: Профилирование Node.js](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/27.jpg)
Кладезь полезных ссылок
• 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](https://reader031.vdocuments.net/reader031/viewer/2022020307/55aa727a1a28ab652e8b4789/html5/thumbnails/28.jpg)
Руководитель группы разработки интерфейсов
[email protected] @denchistyakov
Спасибо! Вопросы?
Чистяков Денис