measuring and monitoring client side performance / nir nahum
TRANSCRIPT
PowerPoint Presentation
Measuring and monitoring client side performanceNir Nahum, CTO @ WalkMe
Measuring and monitoring client side performance
Hi, Im Nir NahumCTO at [email protected]/in/nirnahum
2
What is WalkMe?WalkMe is a game-changing platform that instantly simplifies the online user experience.3
3
4
Enterprise Class Guidance & Engagement Platform
Founded 2011, Launched in April 2012
6 Offices around the world
300+ employees
Raised 92.5M $
Hundreds of customers from various industries & verticals
5
5
Since we are hosted in a website, we share the same resources:CPUMemoryNetworkDOM, Event handlersA performance issue in WalkMe is a performance issue in the hosting website.
Performance Challenges6
So, what do we do?7
7
The solution8A monitoring system that performs automatic performance testing in lab mode and sends the data to dashboards
8
Dashboard Example9
9
Prevent regressionsMore sensitive to performance issuesUnderstand better our bottlenecksVerify performance improvementsCulture
Why have dashboards?10
10
Choose your metricsDefine test casesAutomatic test systemMeasure (Internal + External)Report measurementsCreate dashboardsHow to do it?11
11
Tips12
12
Our product consists of base product + n WalkThrusAssuming our base product consumes 100MB of memoryEach WalkThru consumes 1MB of memoryWe will create two usersData variations in your tests
13Users with different data# WalkThrusMem+5MB in base code+0.1MB in WalkThruUser A2102107 (+5%)102.2 (< +1%)User B500600605 (< +1%)650 (+8%)
The future14Real time monitoring of our customers in production
14
We also monitor our client side javascript files size.
File size monitoring15
Higher file size -> Longer download time and parse time.When there is an increase or decrease in more than 2KB we also send an alert email.Common pitfalls: eval, using external libraries, shared code, no awareness.
File size monitoring (cont.)16
The total time to run a JS file comprises of: Download + Parse + Execution times.
var start = new Date().getTime();
var totalTime = new Date().getTime() - start;
Javascript parse and execution time17
Measuring Parse and Execution times separately
var start = new Date().getTime();// eval the code - the timer at the beginning of this string marks end of parseeval("var parseEnd = new Date().getTime();\n" + "-- SCRIPT CONTENT HERE --");// end of parse to here is exec endvar execEnd = new Date().getTime();
var parseTime = parseEnd - start;var execTime = execEnd - parseEnd;
Javascript parse and execution time18
Optimize parsing and execution separatelyhttps://github.com/etsy/DeviceTimingJavascript parse and execution time (cont.)19
We are hiring!20www.walkme.com/[email protected]
20