This document compares performance of Node.js, Apache + PHP, Manhattan, and Mojito frameworks. Node.js showed superior performance scaling to over 3,000 requests per second with low latency. Manhattan and Mojito also outperformed Apache + PHP in some tests. The document concludes Node.js is well-suited for I/O bound use cases that require handling many concurrent requests quickly and reliably.
1 of 38
Downloaded 166 times
More Related Content
Node.js Performance Case Study
1. Performance Case Study
@Fabian_Frank
<fabian@pagefault.de>
Yahoo! Search, Engineer
Youthmedia.eu,Volunteer
8. Event Queue
does only one thing at a time
events that occur are queued for
processing
after an event was processed the next one
is fetched from the queue
9. The difference
Workers Event Queue
1. synchronous call 1. asynchronous call that
speci鍖es event(s) that can
2. worker blocked occur (callback)
3. periodically check if 2. process next event
worker can go ahead
3. speci鍖ed event occurs and
4. call returns is put on the queue
5. worker goes ahead on 4. process goes ahead
next check
10. Another difference
Workers Event Queue
1 connection per N connections per
worker process
N workers per CPU 1 process (per CPU)
11. Regarding...
static 鍖le serving benchmarks
are not relevant, unless you plan to do
heavy duty static 鍖le serving (Im not)
hello world benchmarks
still ignore most of what matters, e.g.
accessing a database or other back-ends
12. Realistic
Real World Benchmark
a lot of variables that have to be controlled
more complex, likely to surface weird bugs
face unanswerable questions
are expensive to do
are easy to attack, but hard to defend
13. My Reasoning
I can not compare everything out there
against everything else. But I can compare
what I want to use in the future against what
I am using today.
14. Search Case Study
Right Panel retrieved using AJAX
{ html: <div>...</div>, css: ..., js: ..., ... }
15. Refresh Right Panel
1. receive a request JSON API
2. call a JSON API over HTTP 2.
3. manipulate the data structure Node.js 3.
4.
4. render it as HTML using Mustache 1. 5.
5. write back wrapped in JSON Client
16. Refresh Right Panel
1. receive a request JSON API
2. call a JSON API over HTTP 2.
3. manipulate the data structure xy 3.
ro 4.
Node.js
P
4. render it as HTML using Mustache 1. 5.
5. write back wrapped in JSON Client
19. Apache + PHP
works, in production for decades
initial response times are good enough
scales, but you need $$$
baseline to get a feeling for the numbers
21. Node.js (+ YUI)
works, but very new and untested stack
initial response times are very low
scales extremely well
YUI works well, but still has pitfalls
22. Node.js Fun Facts
>3100 requests per second
100k requests in 32s
9MByte/s network traf鍖c
serve >2k req/s at 20ms average latency
99% @ 47ms
28. Manhattan + Mojito
works, but extremely new and untested
stack
initial response times are low (60%
compared to Apache/PHP)
scales well (twice as good as Apache/PHP)
31. Findings
Both node.js implementations scale linearly
before CPU usage hits 100%
Node.js scales extremely well as proxy
Manhattan and Mojito can perform better
than Apache and PHP (for this use case)
Node.js applications are very sensitive to
memory leaks or complex/blocking code
32. DNS in Node.js
getaddrinfo() sys call is synchronous
gethostbyname() is, too
ares_gethostbyname() is asynchronous
no cache
node 0.6 uses a getaddrinfo() thread pool,
but still relies on ares for other calls
34. Manhattan?
Yahoo!s Node.js cloud
can run any node.js application
allows calls to HTTP APIs (e.g.YQL)
deployment of versioned apps
apps can specify their environment
http://developer.yahoo.com/blogs/ydn/posts/2011/11/yahoo-announces-cocktails-%E2%80%93-shaken-not-stirred/
35. Mojito?
Yahoo!s Node.js MVC framework
provides identical similar runtime for your
code on the client and server
contains all server- and client-side code
built on top of YUI
will be open sourced
http://developer.yahoo.com/blogs/ydn/posts/2011/11/yahoo-announces-cocktails-%E2%80%93-shaken-not-stirred/
36. The Cocktails way
Mojito Application
Mojit
Assets
Model Client JS Images
Controller
View CSS ...
37. Conclusion
Node.js can serve hundreds of concurrent
requests quickly and reliable, better than
Apache/PHP
It scales extremely well for I/O bound use
cases
It tears down the client-server language
barrier, opening new architectural
possibilities