SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
Why measure?
                       boomerang
                    data data data




Measuring the web with boomerang

   Philip Tellis / philip@bluesmoon.info


     NY Performance Meetup / 2010-09-15




NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?
                                    boomerang
                                 data data data


$ finger philip



      Philip Tellis
      philip@bluesmoon.info
      @bluesmoon
      yahoo
      geek
      http://bluesmoon.info/




             NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Where does all the time go?




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                                boomerang     Measurements
                             data data data   Measuring with javascript


Who controls it?




        Some of this we control and some of it we don’t




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                                boomerang     Measurements
                             data data data   Measuring with javascript


Back end




  Measuring and improving back end performance can be done
                     during development




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                                 boomerang     Measurements
                              data data data   Measuring with javascript


80-20




   Turns out that less than 20% of the time is spent on the back
                               end




          NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Front end




              It’s what we can’t control that bites us




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                         browsers




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                            plugins




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                               OSes




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                              viruses




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                          antiviruses




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                         microwaves




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                       baby monitors




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                naughty neighbours




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                              file shares




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                           governments




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




                                   rodents




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Too many variations




       Try simulating all that in the lab!




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                        boomerang     Measurements
                     data data data   Measuring with javascript




We need to measure real end-user performance




 NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                         boomerang     Measurements
                      data data data   Measuring with javascript




We need to measure it from the real end-user’s box




  NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                               boomerang     Measurements
                            data data data   Measuring with javascript


Ask the user?




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                                   boomerang     Measurements
                                data data data   Measuring with javascript


Bias




       While this might work, it isn’t necessarily representative




            NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                                 boomerang     Measurements
                              data data data   Measuring with javascript


A/B testing




   You also want to be able to dynamically tune which users get
                            which tests




          NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                                boomerang     Measurements
                             data data data   Measuring with javascript


Phone home




  It’s most useful if you can send these measurements back to
                       your server for analysis




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                                 boomerang     Measurements
                              data data data   Measuring with javascript


Mostly ubiquitous




   We know that javascript is available on almost every browser




          NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                                boomerang     Measurements
                             data data data   Measuring with javascript


Rich pages




    We really want to measure the performance of rich pages
               which depend on javascript already




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     The slow web
                                 boomerang     Measurements
                              data data data   Measuring with javascript


Limited




   But javascript can’t measure everything... we get as close as
                              we can




          NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                               boomerang     How does it work?
                            data data data   Accuracy




A piece of javascript that you add to your web page where it
measures and beacons back to you, the end user’s perceived
performance of your page




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                              boomerang     How does it work?
                           data data data   Accuracy


How?



 <script src="boomerang.js" type="text/javascript">
 </script>
 <script type="text/javascript">
 BOOMR.init({
     user_ip: "<user’s ip address>",
     beacon_url: "http://yoursite.com/beacon.php"
 });
 </script>




       NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


What does it do?



     About once a week, measures user’s bandwidth and
     latency to your server
     On (almost) every request, measures the time it took to
     load the current page
     Beacons these results back to your server
     Other stuff based on plugins




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How does it do it?




                       Let’s take that one at a time




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How do we measure latency?




     Download a 32 byte gif 10 times in sequence
     Measure the time to download each
     Discard the first measurement because it’s overpriced
     Calculate the arithmetic mean, standard deviation and
     margin of error of the rest




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


Wait, did you say overpriced?




     The first image might require a DNS lookup and TCP
     handshake
     Slow start is not an issue since 32 bytes fits in 1 packet




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How do we measure bandwidth?



     After the latency test is done, we download progressively
     larger images
     Stop at the first image that times out
     Redownload that image a few more times
     Calculate the median, standard deviation and margin of
     error of the largest images




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


Measuring latency before bandwidth helps here




     Those 10 latency images do a lot to widen the TCP
     window size
     The bandwidth images make much better use of bandwidth
     The image we end with uses the most bandwidth




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How do we measure page load time?



     In the onbeforeunload event, measure the time and
     store it in a cookie
     In the onload event, check the cookie, and measure the
     difference with the current time
     We also make sure that the page that set the cookie is the
     referrer of the current page




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


What? Two pages?




     Yes, this needs two pages and cookies. If those aren’t
         supported, we try to use the WebTiming API.




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     What?
                                boomerang     How does it work?
                             data data data   Accuracy


How accurate is it?



     Latency measurements are very accurate (±1%)
     Bandwidth is to an order of magnitude. For bad
     connections can be ±30%
     Page load time sometimes has outliers, you need
     post-filtering
     The margin of error tells you how good your data is




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   Data


What do we do with the data?




     Sanity checking to:
         Remove fake data
         Remove abusive data
         Maybe just rate limiting




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                 boomerang     Grouping
                              data data data   Data


What do we do with the data?




     Statistical analysis to:
          Remove outliers
          Aggregate based on bandwidth blocks
          Measure trends over time and correlate them with code
          changes




          NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   Data


Bandwidth blocks




     0-100 kbps
     100-300 kbps
     300-2000 kbps
     2-6 Mbps
     6+ Mbps




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                               boomerang     Grouping
                            data data data   Data


Bandwidth blocks




       Group page load times based on bandwidth block




        NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                 boomerang     Grouping
                              data data data   Data


Bandwidth blocks




   Data points from some countries may require narrower bands




          NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                  boomerang     Grouping
                               data data data   Data


Geographic data




   Looking at latency from different geographic locations can tell
                  you where to put your next CDN




           NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                  boomerang     Grouping
                               data data data   Data


ISPs




       Grouping data by ISP can tell you who’s behaving badly




           NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   Data


Storing the data




     We log all beacon requests to apache’s log access file
     Low traffic sites could write directly to a DB
     Others have suggested using CouchDB as the beacon
     server
     Daily summaries can be sent across to ShowSlow




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   Data


More data




     Write plugins to get more performance data
     We already have a DNS plugin
     I’m thinking of an IPv6 v/s IPv4 plugin
     What about a full WebTiming plugin?
     Can we measure connection setup time?




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   Data


You decide




      Once you have the data, you can do anything with it




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?        Filtering
                       boomerang        Grouping
                    data data data      Data




                            Thank you
                     http://github.com/yahoo/boomerang
                  http://yahoo.github.com/boomerang/doc/




NY Performance Meetup / 2010-09-15      Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   Data


Photo credits




     flickr.com/photos/21233184@N02/4389412851




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                 boomerang     Grouping
                              data data data   Data


Contact me



     Philip Tellis
     yahoo
     geek
     @bluesmoon
     http://bluesmoon.info/
     slideshare.net/bluesmoon
     philip@bluesmoon.info




          NY Performance Meetup / 2010-09-15   Measuring the web with boomerang
Why measure?     Filtering
                                boomerang     Grouping
                             data data data   Data


References




     github.com/yahoo/boomerang
     More bandwidth doesn’t matter (much) – Mike Belshe
     Analysing Bandwidth & Latency – YUI Blog
     It’s the latency, stupid – Stuart Cheshire
     The statistics of web performance




         NY Performance Meetup / 2010-09-15   Measuring the web with boomerang

Weitere ähnliche Inhalte

Mehr von Philip Tellis

Improving D3 Performance with CANVAS and other Hacks
Improving D3 Performance with CANVAS and other HacksImproving D3 Performance with CANVAS and other Hacks
Improving D3 Performance with CANVAS and other HacksPhilip Tellis
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
 
Frontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxFrontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxPhilip Tellis
 
Frontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy PersonFrontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy PersonPhilip Tellis
 
Beyond Page Level Metrics
Beyond Page Level MetricsBeyond Page Level Metrics
Beyond Page Level MetricsPhilip Tellis
 
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Philip Tellis
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonPhilip Tellis
 
RUM Distillation 101 -- Part I
RUM Distillation 101 -- Part IRUM Distillation 101 -- Part I
RUM Distillation 101 -- Part IPhilip Tellis
 
Improving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesImproving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesPhilip Tellis
 
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"Philip Tellis
 
The Statistics of Web Performance Analysis
The Statistics of Web Performance AnalysisThe Statistics of Web Performance Analysis
The Statistics of Web Performance AnalysisPhilip Tellis
 
Abusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web PerformanceAbusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web PerformancePhilip Tellis
 
Analysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptAnalysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptPhilip Tellis
 
A Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficA Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficPhilip Tellis
 
Messing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristicsMessing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristicsPhilip Tellis
 

Mehr von Philip Tellis (20)

Improving D3 Performance with CANVAS and other Hacks
Improving D3 Performance with CANVAS and other HacksImproving D3 Performance with CANVAS and other Hacks
Improving D3 Performance with CANVAS and other Hacks
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
Frontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxFrontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou Furieux
 
Frontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy PersonFrontend Performance: Expert to Crazy Person
Frontend Performance: Expert to Crazy Person
 
Beyond Page Level Metrics
Beyond Page Level MetricsBeyond Page Level Metrics
Beyond Page Level Metrics
 
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
mmm... beacons
mmm... beaconsmmm... beacons
mmm... beacons
 
RUM Distillation 101 -- Part I
RUM Distillation 101 -- Part IRUM Distillation 101 -- Part I
RUM Distillation 101 -- Part I
 
Improving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesImproving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFrames
 
Extending Boomerang
Extending BoomerangExtending Boomerang
Extending Boomerang
 
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
 
The Statistics of Web Performance Analysis
The Statistics of Web Performance AnalysisThe Statistics of Web Performance Analysis
The Statistics of Web Performance Analysis
 
Abusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web PerformanceAbusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web Performance
 
Analysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptAnalysing network characteristics with JavaScript
Analysing network characteristics with JavaScript
 
A Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficA Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web Traffic
 
Input sanitization
Input sanitizationInput sanitization
Input sanitization
 
Messing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristicsMessing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristics
 

Kürzlich hochgeladen

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 

Kürzlich hochgeladen (20)

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 

Boomerang @ NY Web Perf meetup

  • 1. Why measure? boomerang data data data Measuring the web with boomerang Philip Tellis / philip@bluesmoon.info NY Performance Meetup / 2010-09-15 NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 2. Why measure? boomerang data data data $ finger philip Philip Tellis philip@bluesmoon.info @bluesmoon yahoo geek http://bluesmoon.info/ NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 3. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Where does all the time go? NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 4. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Who controls it? Some of this we control and some of it we don’t NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 5. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Back end Measuring and improving back end performance can be done during development NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 6. Why measure? The slow web boomerang Measurements data data data Measuring with javascript 80-20 Turns out that less than 20% of the time is spent on the back end NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 7. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Front end It’s what we can’t control that bites us NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 8. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations browsers NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 9. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations plugins NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 10. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations OSes NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 11. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations viruses NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 12. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations antiviruses NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 13. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations microwaves NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 14. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations baby monitors NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 15. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations naughty neighbours NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 16. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations file shares NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 17. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations governments NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 18. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations rodents NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 19. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Too many variations Try simulating all that in the lab! NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 20. Why measure? The slow web boomerang Measurements data data data Measuring with javascript We need to measure real end-user performance NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 21. Why measure? The slow web boomerang Measurements data data data Measuring with javascript We need to measure it from the real end-user’s box NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 22. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Ask the user? NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 23. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Bias While this might work, it isn’t necessarily representative NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 24. Why measure? The slow web boomerang Measurements data data data Measuring with javascript A/B testing You also want to be able to dynamically tune which users get which tests NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 25. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Phone home It’s most useful if you can send these measurements back to your server for analysis NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 26. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Mostly ubiquitous We know that javascript is available on almost every browser NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 27. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Rich pages We really want to measure the performance of rich pages which depend on javascript already NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 28. Why measure? The slow web boomerang Measurements data data data Measuring with javascript Limited But javascript can’t measure everything... we get as close as we can NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 29. Why measure? What? boomerang How does it work? data data data Accuracy A piece of javascript that you add to your web page where it measures and beacons back to you, the end user’s perceived performance of your page NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 30. Why measure? What? boomerang How does it work? data data data Accuracy How? <script src="boomerang.js" type="text/javascript"> </script> <script type="text/javascript"> BOOMR.init({ user_ip: "<user’s ip address>", beacon_url: "http://yoursite.com/beacon.php" }); </script> NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 31. Why measure? What? boomerang How does it work? data data data Accuracy What does it do? About once a week, measures user’s bandwidth and latency to your server On (almost) every request, measures the time it took to load the current page Beacons these results back to your server Other stuff based on plugins NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 32. Why measure? What? boomerang How does it work? data data data Accuracy How does it do it? Let’s take that one at a time NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 33. Why measure? What? boomerang How does it work? data data data Accuracy How do we measure latency? Download a 32 byte gif 10 times in sequence Measure the time to download each Discard the first measurement because it’s overpriced Calculate the arithmetic mean, standard deviation and margin of error of the rest NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 34. Why measure? What? boomerang How does it work? data data data Accuracy Wait, did you say overpriced? The first image might require a DNS lookup and TCP handshake Slow start is not an issue since 32 bytes fits in 1 packet NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 35. Why measure? What? boomerang How does it work? data data data Accuracy How do we measure bandwidth? After the latency test is done, we download progressively larger images Stop at the first image that times out Redownload that image a few more times Calculate the median, standard deviation and margin of error of the largest images NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 36. Why measure? What? boomerang How does it work? data data data Accuracy Measuring latency before bandwidth helps here Those 10 latency images do a lot to widen the TCP window size The bandwidth images make much better use of bandwidth The image we end with uses the most bandwidth NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 37. Why measure? What? boomerang How does it work? data data data Accuracy How do we measure page load time? In the onbeforeunload event, measure the time and store it in a cookie In the onload event, check the cookie, and measure the difference with the current time We also make sure that the page that set the cookie is the referrer of the current page NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 38. Why measure? What? boomerang How does it work? data data data Accuracy What? Two pages? Yes, this needs two pages and cookies. If those aren’t supported, we try to use the WebTiming API. NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 39. Why measure? What? boomerang How does it work? data data data Accuracy How accurate is it? Latency measurements are very accurate (±1%) Bandwidth is to an order of magnitude. For bad connections can be ±30% Page load time sometimes has outliers, you need post-filtering The margin of error tells you how good your data is NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 40. Why measure? Filtering boomerang Grouping data data data Data What do we do with the data? Sanity checking to: Remove fake data Remove abusive data Maybe just rate limiting NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 41. Why measure? Filtering boomerang Grouping data data data Data What do we do with the data? Statistical analysis to: Remove outliers Aggregate based on bandwidth blocks Measure trends over time and correlate them with code changes NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 42. Why measure? Filtering boomerang Grouping data data data Data Bandwidth blocks 0-100 kbps 100-300 kbps 300-2000 kbps 2-6 Mbps 6+ Mbps NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 43. Why measure? Filtering boomerang Grouping data data data Data Bandwidth blocks Group page load times based on bandwidth block NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 44. Why measure? Filtering boomerang Grouping data data data Data Bandwidth blocks Data points from some countries may require narrower bands NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 45. Why measure? Filtering boomerang Grouping data data data Data Geographic data Looking at latency from different geographic locations can tell you where to put your next CDN NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 46. Why measure? Filtering boomerang Grouping data data data Data ISPs Grouping data by ISP can tell you who’s behaving badly NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 47. Why measure? Filtering boomerang Grouping data data data Data Storing the data We log all beacon requests to apache’s log access file Low traffic sites could write directly to a DB Others have suggested using CouchDB as the beacon server Daily summaries can be sent across to ShowSlow NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 48. Why measure? Filtering boomerang Grouping data data data Data More data Write plugins to get more performance data We already have a DNS plugin I’m thinking of an IPv6 v/s IPv4 plugin What about a full WebTiming plugin? Can we measure connection setup time? NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 49. Why measure? Filtering boomerang Grouping data data data Data You decide Once you have the data, you can do anything with it NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 50. Why measure? Filtering boomerang Grouping data data data Data Thank you http://github.com/yahoo/boomerang http://yahoo.github.com/boomerang/doc/ NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 51. Why measure? Filtering boomerang Grouping data data data Data Photo credits flickr.com/photos/21233184@N02/4389412851 NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 52. Why measure? Filtering boomerang Grouping data data data Data Contact me Philip Tellis yahoo geek @bluesmoon http://bluesmoon.info/ slideshare.net/bluesmoon philip@bluesmoon.info NY Performance Meetup / 2010-09-15 Measuring the web with boomerang
  • 53. Why measure? Filtering boomerang Grouping data data data Data References github.com/yahoo/boomerang More bandwidth doesn’t matter (much) – Mike Belshe Analysing Bandwidth & Latency – YUI Blog It’s the latency, stupid – Stuart Cheshire The statistics of web performance NY Performance Meetup / 2010-09-15 Measuring the web with boomerang