Your SlideShare is downloading. ×
A million connections and beyond - Node.js at scale
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

A million connections and beyond - Node.js at scale

30,744
views

Published on

Published in: Technology

3 Comments
30 Likes
Statistics
Notes
No Downloads
Views
Total Views
30,744
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
221
Comments
3
Likes
30
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript

    • 1. A million connections... AND BEYOND!!! Node.js at Scale
    • 2. One millionconnections!!!
    • 3. A million isntvery much these days...
    • 4. One hundred billionconnections!!!
    • 5. What this talk is really about Picking meaningful benchmarks Current state of Node.js benchmarks Understanding why benchmarks arent _that_ important How to pick the right language/framework/lib
    • 6. What can we measure?Computation Disk I/ONet work I/O Throughput TCP Libraries UDP URL Parsing HTTP etc
    • 7. How do we measure? Load averages Memory usage Average time - Average perf. of each operation Latency - Actual performance of each operation
    • 8. ComparisonErlang vs. Node.js vs. Tornado3 Erlang libsStock Node.jsStock TornadoSingle core
    • 9. Desired vs. Real Responses
    • 10. Response times
    • 11. I pity the fool who uses Node
    • 12. Questioning benchmarks What do average times mean? Responses on a curve Who uses in memory servers?
    • 13. Finding Nodes strength connections: 933990 errors: 0 Read from remote host gqzdj9ab.joyent.us: Operation timed out Connection to gqzdj9ab.joyent.us closed. Enki:~ $
    • 14. var net = require(net)var conns = 0function connectToServer(ip) { conn = net.createConnection(8000, ip) conn.on(connect, function() { conns += 1 }) conn.on(end, function() { conns -= 1 })}for(i=0;i<61000;i++) { connectToServer(72.2.120.106)}
    • 15. var net = require(net)var s = net.createServer()var c = 0;var e = 0;s.on(connection, function(socket) { c += 1 socket.on(end, function() { c -= 1 }) socket.on(error, function(e) { e += 1 })})s.listen(8000)setInterval(function() { console.log(connections: + c) console.log(errors: + e)}, 5000)
    • 16. Finding Nodes strength PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 22593 root 758M 642M cpu11 25 0 0:17:54 6.2% node/1 22542 croucher 4308K 3084K cpu2 59 0 0:00:08 0.2% prstat/1 ... ... ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE 27 31 1489M 782M 38% 1:59:54 6.3% gqzdj9ab
    • 17. Where to use atomic measurements Measuring performance improvements over time Figuring out the hot-path Profiling against your specific use case
    • 18. 8x Perfimprovement
    • 19. I am a super stuff effective measurement Because I put stuff on one axis and things on another and now Im like thingsproper science and you should totally use me to base all your judgements about everything on… no seriously...
    • 20. Why benchmarks arentas important as we think There is a tradeoff bet ween performance and productivity If this werent true wed all still be writing in ASM
    • 21. Fit for purposeSandboxed language Event Driven PHP, Python Node.js Java, C# Event Machine (Ruby) Ruby, etc Tornado (Python) Message Passing Erlang
    • 22. Class of languages for the Internet New languages/platforms like Node.js designed for Internet applications New class of languages are efficient enough, but are they easy enough? Node.js designed from scratch for net work server programming
    • 23. Reasons to use Node Its really fast. Very much fast enough. Its easy to use for Internet/Web applications. Its JavaScript. It has an extremely active community. It has a lot of project velocity.
    • 24. What we need from benchmarksBenchmarks to test real world use cases Servers that do more than just hello worldBenchmarks to compare real test cases from manyplatformsBenchmarks that reflect mobile clientsNode CI on many platforms
    • 25. Questions?Im on Twitter http:/ witter.com/sh1mmer /t Thats a "one" in my nickCheck out the book on http://ofps.oreilly.com Its free to read and comment. New release this week