Workshop: Production Diagnostics for Node Applications
Node.js, the popular cross-platform JavaScript server framework, has grown in popularity and scale to the point where very challenging, non-trivial, production-only issues pop up in complex deployment environments. Although Node.js is equipped with the built-in V8 profiler, it is limited in scope to CPU time, which doesn’t account for the majority of Node.js performance issues. Also, profiling in production environments requires non-invasive tools with a low overhead, which do not require an application restart for the sake of profiling. In this workshop, we will learn, understand, and experiment with Node.js profiling tools designed for production use.
We will experiment with the built-in V8 profiler, and learn how to analyze its log output to zoom-in on CPU hot-spots in the V8 runtime, your JavaScript code, or external modules. We will also explore the Linux perf multi-tool, which can perform general-purpose CPU profiling, and how to get the Node.js runtime to generate symbolic information required to resolve stack traces emitted by perf. We will visualize stack traces using flame graphs, and understand where the CPU bottlenecks lie. We will also look at core dump analysis for crashes and memory leaks, and identify heap objects using the llnode plugin for lldb. In the second half of this workshop, we will talk about more complicated scenarios: diagnosing intermittent errors when connecting to a database or running queries, monitoring system I/O load, understanding the reasons for excessive V8 garbage collection, figuring out why your event loop thread is blocked, and more.
Outline:
- Node.js observability tools
- CPU profiling with V8
- Linux perf and CPU sampling
- Visualizing CPU profiles with flame graphs
- Introduction to BPF
- BPF scenarios and the BCC toolkit
- USDT probes
- Blocked-time analysis
Other Workshops:
Tracks
Monday, 5 March
-
Leading Edge Backend Languages
Code the future! How cutting-edge programming languages and their more-established forerunners can help solve today and tomorrow’s server-side technical problems.
-
Security: Red XOR Blue Team
Security from the defender's AND the attacker's point of view
-
Microservices/ Serverless: Patterns and Practices
Stories of success and failure building modern service and function-based applications, including event sourcing, reactive, decomposition, & more.
-
Stream Processing in the Modern Age
Compelling applications of stream processing & recent advances in the field
-
DevEx: The Next Evolution of DevOps
Removing friction from the developer experience.
-
Modern CS in the Real World
Applied trends in Computer Science that are likely to affect Software Engineers today.
-
Speaker AMAs (Ask Me Anything)
Tuesday, 6 March
-
Next Gen Banking: It’s not all Blockchains and ICOs
Great technologies like Blockchain, smartphones and biometrics must not be limited to just faster banking, but better banking.
-
Observability: Logging, Alerting and Tracing
Observability in modern large distributed computer systems
-
Building Great Engineering Cultures & Organizations
Stories of cultural change in organizations
-
Architectures You've Always Wondered About
Topics like next-gen architecture mixed with applied use cases found in today's large-scale systems, self-driving cars, network routing, scale, robotics, cloud deployments, and more.
-
The Practice & Frontiers of AI
Learn about machine learning in practice and on the horizon
-
JavaScript and Beyond: The Future of the Frontend
Exploring the great frontend frameworks that make JavaScript so popular and theg JavaScript-based languages revolutionising frontend development.
-
Speaker AMAs (Ask Me Anything)
Wednesday, 7 March
-
Distributed Stateful Systems
Architecting and leveraging NoSQL revisitied
-
Operating Systems: LinuxKit, Unikernels, & Beyond
Applied, practical, & real-world deep-dive into industry adoption of OS, containers and virtualisation, including Linux on Windows, LinuxKit, and Unikernels
-
Architecting for Failure
If you're not architecting for failure you're heading for failure
-
Evolving Java and the JVM: Mobile, Micro and Modular
Although the Java language is holding strong as a developer favourite, new languages and paradigms are being embraced on JVM.
-
Tech Ethics in Action
Learning from the experiences of real-world companies driving technology decisions from ethics as much as technology.
-
Bare Knuckle Performance
Killing latency and getting the most out of your hardware
-
Speaker AMAs (Ask Me Anything)