Upload
fred-beringer
View
463
Download
1
Embed Size (px)
Citation preview
Source: Forrester Research
Rebuilding Pinterest pages for performance resulted in a 40% decrease in wait time, a 15% increase in SEO traffic and a 15% increase in conversion rate to signup.
Source: Forrester Research
BBC has seen that they lose an additional 10% of users for every additional second it takes for their site to load
Source: Forrester Research
Staples reduced median homepage load time by 1 second and reduced load time for the 98th percentile by 6 seconds. As a result, they saw a 10% increase in their conversion rate.
11
Synthetic Monitoring
Real User Monitoring
NFRs
Back-End Optimization
Performance Budget
Automated Load Test
Automated WebPageTestBack-End Monitoring
Front-End Optimization
Production Load Test
class ProjectServicePatchSimulation extends Simulation {val users = Configuration.getNumUsers(100)val ramp = Configuration.getRampDuration(60 seconds)val simulationDuration = Configuration.getDuration(StandardDurations.EXTRA_LONG)val httpConf = newProjectServicesConfig(Configuration.ssapiProjectService.httpsUrl)val numRepeats = 500;val projectPatchScenario = scenario(this.getClass.getSimpleName)
.during(simulationDuration) {exitBlockOnFail {
exec(clearCookies).exec{session=>println("Simualtion duration: " + simulationDuration)session
}.exec(NonVisualAuthenticationService.signInUniqueUser).exec(ProjectService.createProject("photobook")).repeat(numRepeats) {
exec(ProjectService.patchProject("photobook", "${userid}", "${photobook_project_guid}"))
}.exec(ProjectService.createProject("calendar")).repeat(numRepeats) {
exec(ProjectService.patchProject("calendar", "${userid}", "${calendar_project_guid}"))}.exec(signOut)
}}
setUp(projectPatchScenario.inject(rampUsers(users) over (ramp))).protocols(httpConf).assertions(simulationAssertions)
private def simulationAssertions: List[Assertion] = {val baseAsserts = List(
details(ProjectService.REQUEST_PATCH_PROJECT + "-calendar").failedRequests.percent.lessThan(1),
details(ProjectService.REQUEST_PATCH_PROJECT + "-photobook").failedRequests.percent.lessThan(1),
details(ProjectService.REQUEST_PATCH_PROJECT + "-calendar").responseTime.percentile3.lessThan(12000),
details(ProjectService.REQUEST_PATCH_PROJECT + "-photobook").responseTime.percentile3.lessThan(1411),
details(ProjectService.REQUEST_PATCH_PROJECT + "-calendar").requestsPerSec.greaterThan(10),
details(ProjectService.REQUEST_PATCH_PROJECT + "-photobook").requestsPerSec.greaterThan(30)
)baseAsserts
}}
AUTOMATED LOAD AND PERFORMANCE
BACK-END OPTIMIZATION
Duringnon-peak1. P80- Backendtimeforthispageisaround1.5Secs(frommpulse)2. Around30slowtransactionsevery10mins(fromappD)3. Around4veryslowtransactions(>900ms)every10mins
SAMPLE:ONESFLYCRITICALPAGES
BACK-END OPTIMIZATION
JDBCConnectionObjectsarecreatedratherthanobtainingfrompool.Databaseconnectionsareoftenexpensivetocreatebecauseoftheoverheadofestablishinganetworkconnectionandinitializingadatabaseconnectionsessioninthebackenddatabase.
Recommendation:UseConnectionpool
SAMPLE:DBCONNECTION