Archive for the ‘Node.js’ Category

Programming language debuggability

A few weeks ago I had the fortune to attend a talk by Douglas Crockford on various ideas related to JavaScript past and future and programming language design. The talk was thoughtful and well-received (and thanks to Crockford and Bigcommerce for making it happen!). The main theme, not new to those familiar with Crockford’s work, [...]

Posted on February 18, 2015 at 10:58 am by dap · Permalink · Comments Closed
In: Node.js

Debugging enhancements in Node 0.12

(also on the Joyent blog) Background Node.js provides the richest postmortem debugging facilities of just about any dynamic language. Postmortem debugging refers to debugging programs from a core file, heap dump, or some similar dump of memory. With a core file of a Node program (which is essentially a snapshot of your program’s state), you [...]

Posted on February 11, 2015 at 9:59 am by dap · Permalink · Comments Closed
In: joyent, Node.js, smartos

Understanding DTrace ustack helpers

or, everything you ever wanted to know about stack traces I promised this post over a year ago, and now that someone’s actually working on a new ustack helper, I thought it was finally time to write about what ustack helpers are, how they work, and how I went about building one for Node.js. Only [...]

Posted on November 20, 2013 at 4:50 pm by dap · Permalink · Comments Closed
In: DTrace, joyent, Node.js, smartos

Tracing Node.js add-on latency

Node.js has some built-in DTrace probes for looking at HTTP request start/done and GC start/done, and I wrote nhttpsnoop to report latency based on these probes. There’s also a future project that will make it easy to trace any asynchronous operations. But in the meantime, there’s one category of latency that’s missing, which is latency [...]

Posted on October 18, 2013 at 8:49 am by dap · Permalink · Comments Closed
In: DTrace, joyent, Node.js

Node.js in production: runtime log snooping

This post also appeared on the Joyeur blog. This post is the one of several about how we operate Node.js in production at Joyent. Most of my experience comes from working on our Manta Storage Service, which currently comprises a few thousand Node processes across three datacenters. Logging is one of the most primitive but [...]

Posted on October 3, 2013 at 5:44 pm by dap · Permalink · Comments Closed
In: joyent, Node.js

Inside Manta: Distributing the Unix shell

Photo by Jackie Reid, NOAA Today, Joyent has launched Manta: our internet-facing object store with compute as a first class operation. This is the culmination of over a year’s effort on the part of the whole engineering team, and I’m personally really excited to be able to share this with the world. There’s plenty of [...]

Posted on June 25, 2013 at 6:10 am by dap · Permalink · Comments Closed
In: joyent, Node.js, smartos

OSCON Slides

Thanks to all who attended my talk at OSCON on Node.js in production: postmortem debugging and performance analysis. Just a reminder: all of the technology I described is open source, most of it part of illumos. For more info, check out the links in slide 22. For the curious, there are also some slides on [...]

Posted on July 19, 2012 at 12:32 pm by dap · Permalink · Comments Closed
In: joyent, Node.js, smartos

NodeConf slides

NodeConf was a great success this year. Thanks to @mikeal for organizing and everyone who spoke and attended. The slides from my talk on DTrace, Node.js, and Flame Graphs are here.

Posted on July 5, 2012 at 12:05 pm by dap · Permalink · Comments Closed
In: DTrace, Node.js

Debugging Node.js in Production (Fluent slides)

Thanks to all who attended my talk at Fluent today on “Debugging Node.js in Production”. The slides are available here. There’s some extra content there that I didn’t have time to cover in just 40 minutes, most notably some implementation notes about mdb_v8 and the DTrace ustack helper. Please leave questions, comments, or feedback below [...]

Posted on May 31, 2012 at 4:43 pm by dap · Permalink · Comments Closed
In: Node.js

Debugging RangeError from a core dump

Last week, I tweeted: I had just run into this nasty Node.js error: $ node foo.js timers.js:96 if (!process.listeners(‘uncaughtException’).length) throw e; ^ RangeError: Maximum call stack size exceeded What went wrong? It was reasonably obvious from the error message that the program blew its stack, which I assumed was likely the result of some errant [...]

Posted on May 14, 2012 at 2:43 pm by dap · Permalink · Comments Closed
In: joyent, Node.js