Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The Node.js Scalability Myth
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Felix Geisendörfer
May 02, 2012
Technology
420
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
The Node.js Scalability Myth
Presentation given on 27.04.2012 at Roots conference in Bergen, Norway.
Felix Geisendörfer
May 02, 2012
More Decks by Felix Geisendörfer
See All by Felix Geisendörfer
tus.io - Resumable File Uploads (Lightning Talk)
felixge
2
840
Programming flying robots with JavaScript
felixge
2
1k
Programming flying robots with JavaScript
felixge
0
650
Programming an AR Drone Firmware with JS (de)
felixge
1
660
Faster than C?
felixge
1
1.3k
Flying robots over a 10.000 mile distance with JavaScript.
felixge
0
550
Faster than C?
felixge
1
710
The power of node.js (with quadcopters)
felixge
0
550
Faster than C?
felixge
0
480
Other Decks in Technology
See All in Technology
自宅LLMの話
jacopen
1
700
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
330
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
240
iAEONの段階的リアーキテクト戦略 / iAEON's_Gradual_Re-architecture_Strategy
aeonpeople
0
250
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
160
「軸足」は 固定しなくていい - 熱量と強みで描く、しなやかなキャリアの形
kakehashi
PRO
1
220
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
150
Bucharest Tech Week 2026 - Guardians of the Cloud-Native Galaxy
edeandrea
PRO
0
130
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
550
あなたの知らないPDFのアクセシビリティ
lycorptech_jp
PRO
0
230
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
430
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
150
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
600
So, you think you're a good person
axbom
PRO
2
2.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
Mind Mapping
helmedeiros
PRO
1
260
Joys of Absence: A Defence of Solitary Play
codingconduct
1
400
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
How to Ace a Technical Interview
jacobian
281
24k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
170
Being A Developer After 40
akosma
91
590k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
160
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Transcript
The Node.js Scalability Myth Felix Geisendörfer 27.04.2012 at Roots Conference
(Bergen, Norway)
(@)felixge(.de)
core contributor
transloadit.com (using node since v0.0.6)
History
Ryan Dahl starts the node project (first commit) Feb 16,
2009
Discovered node.js (v0.0.6) ~June, 2009
None
Core Contributor & Module Author node-mysql node-formidable + 30 other
modules
Isaac Schlueter starts the npm package manager (first commit) Sep
29, 2009
Ryan’s talk at JSConf.EU gets people excited about node Nov
7, 2009
(c) @substack Jan 30, 2012 Ryan appoints Isaac to lead
node.js
Topic of this Talk
I need to build an über-scalable web service. It will
be the next big thing!
Easy! I will use node.js and MongoDB!
Easy! I will use node.js and MongoDB!
Because node.js is “scalable”, right?
None
Audience?
Node.js?
Are you measuring app performance in production?
1000 req / s
100 req / s
10 req / s
10 requests / per second = 864000 requests / day
10 req / s
The End?
I REALLY need to build an über-scalable web service!!11!1
Scalability
(c) @substack
The Node.js Scalability Myth • Threads don’t scale • Event
loops do
The Node.js Scalability Myth • Threads don’t scale • Event
loops do (Probably) not true in 2012 (Very likely) not relevant
More relevant • Understanding your tools • Using the right
tool for the job
Node’s Concurrency Model
Node’s Concurrency Model 1 var http = require('http'); 2 3
http.createServer(function(req, res) { 4 res.end('Hello World'); 5 }).listen(8080); server.js
Node’s Concurrency Model $ node server.js
Node’s Concurrency Model • Node loads server.js from disk ->
v8 compiles & executes • listen() allocates and binds a file descriptor • Event Loops starts running
Node’s Concurrency Model 1 while (true) { 2 int r
= select(nfds, readfds, writefds, errorfds, 0); 3 if (r === 0) { 4 continue; 5 } 6 7 // Figure out which fds had activity, accept() on server fds, read() on // connection fds, write() queued writes 8 } Abstracted by libuv Different on Windows
Node’s Concurrency Model • Cooperative multitasking • Low memory usage
• Fast / efficient • Simple (compared to threads)
Vertical Scalability
Adding more resources to a single node
Vertical Scalability • CPU • GPUs • Memory • Disk
• Network
CPU
CPU (v8) • V8 compiles JS to Assembly • Just-in-time
compilation (JIT) • Does pretty well in those language benchmarks
Computers of the future will have hundreds of cores!
CPU • Node is single threaded (runs on a single
CPU) • No shared memory
But ...
Does your problem require shared memory?
If yes: Don’t use node
And: Good Luck
If no: child_process.fork()
Redis / ZeroMQ are your friends
GPUs
GPUs • No support in node itself • node-cuda addon
by Kashif Rasul
Memory
Memory • No hard memory limit on 64 bit (since
node-0.6 / v8-3.7) • JS is a garbage collected language (avoid huge heaps) • Buffers do not count towards heap
Network
Network • Node’s concurrency model is optimized for networking •
Good at fully saturating available network resources
Disk
Disk • Done in thread pool • Unfortunately along with
DNS at this point • Throughput ok, but not ideal yet • sendfile() not working yet
Does node scale vertically?
Yeah, good enough
Horizontal Scalability
Adding more nodes to a system
Bad News
Node.js has no horizontal scaling features
Even worse
This s#@t is really hard
Problems • De-coupling / encapsulation • CAP Theorem • System
Automation
...
Good Luck
One tip
Monitor & Measure! • Collect: node-measured, statsd, ... • Analyze:
Graphite, Librato Metrics, ... • Debug
So if node doesn’t have magic scaling, what is it
good for?
<Live Coding>
tl;dr • Know your requirements • There are no silver
bullets
Questions? Slides will be available at felixge.de
Thanks
Feedback