A million connections and beyond - Node.js at scale

42.273 visualizaciones

Publicado el

Publicado en: Tecnología
3 comentarios
42 recomendaciones
Estadísticas
Notas
Sin descargas
Visualizaciones
Visualizaciones totales
42.273
En SlideShare
0
De insertados
0
Número de insertados
256
Acciones
Compartido
0
Descargas
352
Comentarios
3
Recomendaciones
42
Insertados 0
No insertados

No hay notas en la diapositiva.
  • \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
  • A million connections and beyond - Node.js at scale

    1. 1. A million connections... AND BEYOND!!! Node.js at Scale
    2. 2. One millionconnections!!!
    3. 3. A million isntvery much these days...
    4. 4. One hundred billionconnections!!!
    5. 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. 6. What can we measure?Computation Disk I/ONet work I/O Throughput TCP Libraries UDP URL Parsing HTTP etc
    7. 7. How do we measure? Load averages Memory usage Average time - Average perf. of each operation Latency - Actual performance of each operation
    8. 8. ComparisonErlang vs. Node.js vs. Tornado3 Erlang libsStock Node.jsStock TornadoSingle core
    9. 9. Desired vs. Real Responses
    10. 10. Response times
    11. 11. I pity the fool who uses Node
    12. 12. Questioning benchmarks What do average times mean? Responses on a curve Who uses in memory servers?
    13. 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. 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. 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. 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. 17. Where to use atomic measurements Measuring performance improvements over time Figuring out the hot-path Profiling against your specific use case
    18. 18. 8x Perfimprovement
    19. 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. 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. 21. Fit for purposeSandboxed language Event Driven PHP, Python Node.js Java, C# Event Machine (Ruby) Ruby, etc Tornado (Python) Message Passing Erlang
    22. 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. 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. 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. 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

    ×