SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
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

Mais conteúdo relacionado

Mais de 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
 

Mais de 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
 

Último

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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 Servicegiselly40
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
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 productivityPrincipled Technologies
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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 WorkerThousandEyes
 
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 MenDelhi Call girls
 
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 SolutionsEnterprise Knowledge
 

Último (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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 convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 
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
 
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
 

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