SlideShare una empresa de Scribd logo
1 de 25
A million connections...
   AND BEYOND!!!
     Node.js at Scale
One million
connections!!!
A million isn't
very much these
     days...
One hundred
    billion
connections!!!
What this talk is really
       about
  Picking meaningful benchmarks

  Current state of Node.js benchmarks

  Understanding why benchmarks aren't _that_
  important

  How to pick the right language/framework/lib
What can we measure?

Computation    Disk I/O

Net work I/O   Throughput

  TCP          Libraries

  UDP            URL Parsing

  HTTP           etc
How do we measure?


 Load averages

 Memory usage

 Average time - Average perf. of each operation

 Latency - Actual performance of each operation
Comparison

Erlang vs. Node.js vs. Tornado

3 Erlang libs

Stock Node.js

Stock Tornado

Single core
Desired vs. Real
  Responses
Response times
I pity the fool who
     uses Node
Questioning benchmarks


   What do average times mean?

     Responses on a curve

   Who uses in memory servers?
Finding Node's strength
 connections: 933990

 errors: 0

 Read from remote host gqzdj9ab.joyent.us:
 Operation timed out

 Connection to gqzdj9ab.joyent.us closed.

 Enki:~ $
var net = require('net')


var conns = 0


function 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')
}
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)
Finding Node's 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
Where to use atomic
  measurements

 Measuring performance improvements over time

 Figuring out the hot-path

 Profiling against your specific use case
8x Perf
improvement
I am a super




                                        stuff
       effective
     measurement
 Because I put stuff on one axis and
 things on another and now I'm like             things
proper science and you should totally
 use me to base all your judgements
       about everything on…

           no seriously...
Why benchmarks aren't
as important as we think

   There is a tradeoff bet ween performance and
   productivity

   If this weren't true we'd all still be writing in ASM
Fit for purpose
Sandboxed language       Event Driven
   PHP, Python              Node.js

   Java, C#                 Event Machine (Ruby)
   Ruby, etc                Tornado (Python)

                         Message Passing
                            Erlang
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
Reasons to use Node

 It's really fast. Very much fast enough.

 It's easy to use for Internet/Web applications.

 It's JavaScript.

 It has an extremely active community.

 It has a lot of project velocity.
What we need from
  benchmarks
Benchmarks to test real world use cases
  Servers that do more than just 'hello world'
Benchmarks to compare real test cases from many
platforms
Benchmarks that reflect mobile clients
Node CI on many platforms
Questions?

I'm on Twitter http:/ witter.com/sh1mmer
                     /t

  That's a "one" in my nick

Check out the book on http://ofps.oreilly.com

  It's free to read and comment. New release this
  week

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Matching techniques
Matching techniquesMatching techniques
Matching techniques
 
02 xml schema
02 xml schema02 xml schema
02 xml schema
 
Adaptive Resonance Theory
Adaptive Resonance TheoryAdaptive Resonance Theory
Adaptive Resonance Theory
 
Association rule mining
Association rule miningAssociation rule mining
Association rule mining
 
Mining Frequent Patterns, Association and Correlations
Mining Frequent Patterns, Association and CorrelationsMining Frequent Patterns, Association and Correlations
Mining Frequent Patterns, Association and Correlations
 
Distributed System ppt
Distributed System pptDistributed System ppt
Distributed System ppt
 
Data Mining Concepts
Data Mining ConceptsData Mining Concepts
Data Mining Concepts
 
Mining Association Rules in Large Database
Mining Association Rules in Large DatabaseMining Association Rules in Large Database
Mining Association Rules in Large Database
 
Clustering
ClusteringClustering
Clustering
 
Data Mining: Classification and analysis
Data Mining: Classification and analysisData Mining: Classification and analysis
Data Mining: Classification and analysis
 
Rapid miner
Rapid minerRapid miner
Rapid miner
 
Heuristic Search Techniques {Artificial Intelligence}
Heuristic Search Techniques {Artificial Intelligence}Heuristic Search Techniques {Artificial Intelligence}
Heuristic Search Techniques {Artificial Intelligence}
 
Clustering: Large Databases in data mining
Clustering: Large Databases in data miningClustering: Large Databases in data mining
Clustering: Large Databases in data mining
 
Data Integration and Transformation in Data mining
Data Integration and Transformation in Data miningData Integration and Transformation in Data mining
Data Integration and Transformation in Data mining
 
Text MIning
Text MIningText MIning
Text MIning
 
CS8075 - Data Warehousing and Data Mining (Ripped from Amazon Kindle eBooks b...
CS8075 - Data Warehousing and Data Mining (Ripped from Amazon Kindle eBooks b...CS8075 - Data Warehousing and Data Mining (Ripped from Amazon Kindle eBooks b...
CS8075 - Data Warehousing and Data Mining (Ripped from Amazon Kindle eBooks b...
 
Data mining tasks
Data mining tasksData mining tasks
Data mining tasks
 
5.1 mining data streams
5.1 mining data streams5.1 mining data streams
5.1 mining data streams
 
Data Mining:Concepts and Techniques, Chapter 8. Classification: Basic Concepts
Data Mining:Concepts and Techniques, Chapter 8. Classification: Basic ConceptsData Mining:Concepts and Techniques, Chapter 8. Classification: Basic Concepts
Data Mining:Concepts and Techniques, Chapter 8. Classification: Basic Concepts
 
1.8 discretization
1.8 discretization1.8 discretization
1.8 discretization
 

Destacado

Экономика продуктов и метрики (Илья Краинский, Magic Ink)
Экономика продуктов и метрики (Илья Краинский, Magic Ink)Экономика продуктов и метрики (Илья Краинский, Magic Ink)
Экономика продуктов и метрики (Илья Краинский, Magic Ink)
PCampRussia
 
Building servers with Node.js
Building servers with Node.jsBuilding servers with Node.js
Building servers with Node.js
ConFoo
 
Экономика и метрика проекта. Илья Красинский
Экономика и метрика проекта. Илья КрасинскийЭкономика и метрика проекта. Илья Красинский
Экономика и метрика проекта. Илья Красинский
Артем Кудрявцев
 

Destacado (20)

Экономика продуктов и метрики (Илья Краинский, Magic Ink)
Экономика продуктов и метрики (Илья Краинский, Magic Ink)Экономика продуктов и метрики (Илья Краинский, Magic Ink)
Экономика продуктов и метрики (Илья Краинский, Magic Ink)
 
Building servers with Node.js
Building servers with Node.jsBuilding servers with Node.js
Building servers with Node.js
 
Экономика и метрика проекта. Илья Красинский
Экономика и метрика проекта. Илья КрасинскийЭкономика и метрика проекта. Илья Красинский
Экономика и метрика проекта. Илья Красинский
 
Horizontally Scaling Node.js and WebSockets
Horizontally Scaling Node.js and WebSocketsHorizontally Scaling Node.js and WebSockets
Horizontally Scaling Node.js and WebSockets
 
Григорий Ситнин: unit-экономика проекта
Григорий Ситнин: unit-экономика проектаГригорий Ситнин: unit-экономика проекта
Григорий Ситнин: unit-экономика проекта
 
Building and Scaling Node.js Applications
Building and Scaling Node.js ApplicationsBuilding and Scaling Node.js Applications
Building and Scaling Node.js Applications
 
Planning for the Horizontal: Scaling Node.js Applications
Planning for the Horizontal: Scaling Node.js ApplicationsPlanning for the Horizontal: Scaling Node.js Applications
Planning for the Horizontal: Scaling Node.js Applications
 
Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture
 
Go to hell Flash, we don't need you anymore! GothamJs
Go to hell Flash, we don't need you anymore! GothamJsGo to hell Flash, we don't need you anymore! GothamJs
Go to hell Flash, we don't need you anymore! GothamJs
 
Воронка продаж для интернет магазина. Методы оптимизации и наращивания продаж
Воронка продаж для интернет магазина. Методы оптимизации и наращивания продажВоронка продаж для интернет магазина. Методы оптимизации и наращивания продаж
Воронка продаж для интернет магазина. Методы оптимизации и наращивания продаж
 
Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)Progressive Enhancement 2.0 (Conference Agnostic)
Progressive Enhancement 2.0 (Conference Agnostic)
 
HSE{SUN}: День 1. Моисеева Анна
HSE{SUN}: День 1. Моисеева АннаHSE{SUN}: День 1. Моисеева Анна
HSE{SUN}: День 1. Моисеева Анна
 
HSE{SUN}: День 2. Артем Азевич
HSE{SUN}: День 2. Артем АзевичHSE{SUN}: День 2. Артем Азевич
HSE{SUN}: День 2. Артем Азевич
 
"От идеи до бизнеса. Инструменты работы с проектами" Николай Савин (Бизнес-ин...
"От идеи до бизнеса. Инструменты работы с проектами" Николай Савин (Бизнес-ин..."От идеи до бизнеса. Инструменты работы с проектами" Николай Савин (Бизнес-ин...
"От идеи до бизнеса. Инструменты работы с проектами" Николай Савин (Бизнес-ин...
 
Пять сил конкуренции М. Портера
Пять сил конкуренции М. ПортераПять сил конкуренции М. Портера
Пять сил конкуренции М. Портера
 
HSE{SUN}: День 3. Вадим Малыч
HSE{SUN}: День 3. Вадим МалычHSE{SUN}: День 3. Вадим Малыч
HSE{SUN}: День 3. Вадим Малыч
 
М. Нальский: Как влюбить клиента в b2b-продукт?
М. Нальский: Как влюбить клиента в b2b-продукт?М. Нальский: Как влюбить клиента в b2b-продукт?
М. Нальский: Как влюбить клиента в b2b-продукт?
 
Олег Громов: конкурентный анализ для стартапов
Олег Громов: конкурентный анализ для стартапов Олег Громов: конкурентный анализ для стартапов
Олег Громов: конкурентный анализ для стартапов
 
HSE{SUN}: День 4. Сергей Голубев
HSE{SUN}: День 4. Сергей ГолубевHSE{SUN}: День 4. Сергей Голубев
HSE{SUN}: День 4. Сергей Голубев
 
Dark patterns - An Overview for Brand Owners
Dark patterns - An Overview for Brand OwnersDark patterns - An Overview for Brand Owners
Dark patterns - An Overview for Brand Owners
 

Similar a A million connections and beyond - Node.js at scale

Similar a A million connections and beyond - Node.js at scale (20)

Node.js: A Guided Tour
Node.js: A Guided TourNode.js: A Guided Tour
Node.js: A Guided Tour
 
Proposal
ProposalProposal
Proposal
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Understanding the Single Thread Event Loop
Understanding the Single Thread Event LoopUnderstanding the Single Thread Event Loop
Understanding the Single Thread Event Loop
 
Node js
Node jsNode js
Node js
 
Best node js course
Best node js courseBest node js course
Best node js course
 
Nodejs
NodejsNodejs
Nodejs
 
Beginners Node.js
Beginners Node.jsBeginners Node.js
Beginners Node.js
 
Node.js: CAMTA Presentation
Node.js: CAMTA PresentationNode.js: CAMTA Presentation
Node.js: CAMTA Presentation
 
Overview Of Parallel Development - Ericnel
Overview Of Parallel Development -  EricnelOverview Of Parallel Development -  Ericnel
Overview Of Parallel Development - Ericnel
 
Kalp Corporate Node JS Perfect Guide
Kalp Corporate Node JS Perfect GuideKalp Corporate Node JS Perfect Guide
Kalp Corporate Node JS Perfect Guide
 
Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS
 
An overview of node.js
An overview of node.jsAn overview of node.js
An overview of node.js
 
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017   ember.js - escape the javascript fatigueNode.js meetup 17.05.2017   ember.js - escape the javascript fatigue
Node.js meetup 17.05.2017 ember.js - escape the javascript fatigue
 
Introduce about Nodejs - duyetdev.com
Introduce about Nodejs - duyetdev.comIntroduce about Nodejs - duyetdev.com
Introduce about Nodejs - duyetdev.com
 
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...
 
Introduction to Node.JS
Introduction to Node.JSIntroduction to Node.JS
Introduction to Node.JS
 
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석 [판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
[판교에서 만나는 아마존웹서비스] Obama for America를 통해서 본 AWS에서의 데이터 분석
 
Node
NodeNode
Node
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
 

Más de Tom Croucher

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Tom Croucher
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Tom Croucher
 
Using Node.js to improve the performance of Mobile apps and Mobile web
Using Node.js to improve  the performance of  Mobile apps and Mobile webUsing Node.js to improve  the performance of  Mobile apps and Mobile web
Using Node.js to improve the performance of Mobile apps and Mobile web
Tom Croucher
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
Tom Croucher
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent Conf
Tom Croucher
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone
Tom Croucher
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
Tom Croucher
 
Lessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaLessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @Media
Tom Croucher
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011
Tom Croucher
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
Tom Croucher
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti code
Tom Croucher
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Tom Croucher
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
Tom Croucher
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010
Tom Croucher
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming
Tom Croucher
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
Tom Croucher
 

Más de Tom Croucher (20)

Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
Using Node.js to  Build Great  Streaming Services - HTML5 Dev ConfUsing Node.js to  Build Great  Streaming Services - HTML5 Dev Conf
Using Node.js to Build Great Streaming Services - HTML5 Dev Conf
 
Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012 Streams are Awesome - (Node.js) TimesOpen Sep 2012
Streams are Awesome - (Node.js) TimesOpen Sep 2012
 
Using Node.js to improve the performance of Mobile apps and Mobile web
Using Node.js to improve  the performance of  Mobile apps and Mobile webUsing Node.js to improve  the performance of  Mobile apps and Mobile web
Using Node.js to improve the performance of Mobile apps and Mobile web
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Creating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent ConfCreating the Internet of Things with JavaScript - Fluent Conf
Creating the Internet of Things with JavaScript - Fluent Conf
 
Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone Using Node.js to make HTML5 work for everyone
Using Node.js to make HTML5 work for everyone
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
 
Lessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @MediaLessons from a coding veteran - Web Directions @Media
Lessons from a coding veteran - Web Directions @Media
 
Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011Multi-tiered Node Architectures - JSConf 2011
Multi-tiered Node Architectures - JSConf 2011
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti code
 
Doing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions SouthDoing Horrible Things with DNS - Web Directions South
Doing Horrible Things with DNS - Web Directions South
 
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance MeetupDoing Horrible Things to DNS in the Name of Science - SF Performance Meetup
Doing Horrible Things to DNS in the Name of Science - SF Performance Meetup
 
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
JavaScript is the new black - Why Node.js is going to rock your world - Web 2...
 
How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010How to stop writing spaghetti code - JSConf.eu 2010
How to stop writing spaghetti code - JSConf.eu 2010
 
Sf perf
Sf perfSf perf
Sf perf
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming
 
Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stack
 

Último

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

A million connections and beyond - Node.js at scale

  • 1. A million connections... AND BEYOND!!! Node.js at Scale
  • 3. A million isn't very much these days...
  • 4. One hundred billion connections!!!
  • 5. What this talk is really about Picking meaningful benchmarks Current state of Node.js benchmarks Understanding why benchmarks aren't _that_ important How to pick the right language/framework/lib
  • 6. What can we measure? Computation Disk I/O Net 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. Comparison Erlang vs. Node.js vs. Tornado 3 Erlang libs Stock Node.js Stock Tornado Single core
  • 9. Desired vs. Real Responses
  • 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 Node's 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 = 0 function 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 Node's 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
  • 19. I am a super stuff effective measurement Because I put stuff on one axis and things on another and now I'm like things proper science and you should totally use me to base all your judgements about everything on… no seriously...
  • 20. Why benchmarks aren't as important as we think There is a tradeoff bet ween performance and productivity If this weren't true we'd all still be writing in ASM
  • 21. Fit for purpose Sandboxed 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 It's really fast. Very much fast enough. It's easy to use for Internet/Web applications. It's JavaScript. It has an extremely active community. It has a lot of project velocity.
  • 24. What we need from benchmarks Benchmarks to test real world use cases Servers that do more than just 'hello world' Benchmarks to compare real test cases from many platforms Benchmarks that reflect mobile clients Node CI on many platforms
  • 25. Questions? I'm on Twitter http:/ witter.com/sh1mmer /t That's a "one" in my nick Check out the book on http://ofps.oreilly.com It's free to read and comment. New release this week

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n