Continuous Performance Testing Shopware Developer Conference. Kore Nordmann 08. June 2013

Similar documents
{SOP_Title} Standard Operating Procedure. Owner: {SOP_Author} {SOP_Description} {SOP_ID} {Date}

Exemplo de Apresentação

R E A D : E S S E N T I A L S C R U M : A P R A C T I C A L G U I D E T O T H E M O S T P O P U L A R A G I L E P R O C E S S. C H.

Dorset Coastal Explorer Planning

Brand guidelines 2014

Infrastructure Automation with Salt

PROJECT TITLE. B.Tech. BRANCH NAME NAME 2 (ROLL NUMBER)

Overlay Transport Virtualization (OTV) Unicast-Mode Transport Infrastructure Deployment

ArcGIS Enterprise: What s New. Philip Heede Shannon Kalisky Melanie Summers Shreyas Shinde

ArcGIS Enterprise: What s New. Philip Heede Shannon Kalisky Melanie Summers Sam Williamson

Introduction to ArcGIS Server Development

ArcGIS Deployment Pattern. Azlina Mahad

ISM Evolution. Elscolab. Nederland BV

Australia s Optical Data Centre

Introduction to Portal for ArcGIS

EBS IT Meeting July 2016

MEDIA KIT D E S T I N A T I O N S M A G A Z I N E D E S T I N A T I O N S M A G A Z I N E. C O M

USER MANUAL. ICIM S.p.A. Certifi cation Mark

A Cotton Irrigator s Decision Support System Using National, Regional and Local Data

How to deal with uncertainties and dynamicity?

CLEAR SPACE AND MINIMUM SIZE. A clear space area free of competing visual elements should be maintained.

The Open Sourcing of Infrastructure

COMP9334: Capacity Planning of Computer Systems and Networks

ArcGIS Enterprise: Administration Workflows STUDENT EDITION

Migration to the New BI360

Your Virtual Workforce. On Demand. Worldwide. COMPANY PRESENTATION. clickworker GmbH 2017

How to give. an IYPT talk

Portal for ArcGIS: An Introduction. Catherine Hynes and Derek Law

Scheduling I. Today Introduction to scheduling Classical algorithms. Next Time Advanced topics on scheduling

git Tutorial Nicola Chiapolini Physik-Institut University of Zurich June 8, 2015

Data Aggregation with InfraWorks and ArcGIS for Visualization, Analysis, and Planning

git Tutorial Nicola Chiapolini Physik-Institut University of Zurich January 26, 2015

Scheduling I. Today. Next Time. ! Introduction to scheduling! Classical algorithms. ! Advanced topics on scheduling

Leveraging Web GIS: An Introduction to the ArcGIS portal

Solutions to COMP9334 Week 8 Sample Problems

Text Analysis. Week 5

The Vaisala AUTOSONDE AS41 OPERATIONAL EFFICIENCY AND RELIABILITY TO A TOTALLY NEW LEVEL.

git Tutorial Nicola Chiapolini Physik-Institut University of Zurich March 16, 2015

Portal for ArcGIS: An Introduction

I N T R O D U C T I O N : G R O W I N G I T C O M P L E X I T Y

GROUP COMPANY PROFILE

Appendix 4 Weather. Weather Providers

Some Personal Perspectives on Demand Forecasting Past, Present, Future

Replication cluster on MariaDB 5.5 / ubuntu-server. Mark Schneider ms(at)it-infrastrukturen(dot)org

Account Setup. STEP 1: Create Enhanced View Account

Introduction to Portal for ArcGIS. Hao LEE November 12, 2015

Recurrent Neural Networks. COMP-550 Oct 5, 2017

Pleo Mobile Strategy

Administrivia. Course Objectives. Overview. Lecture Notes Week markem/cs333/ 2. Staff. 3. Prerequisites. 4. Grading. 1. Theory and application

The Open Sourcing of Infrastructure SLC DevOpsDays 2017

How to Increase the Significance of your GIS

Session-Based Queueing Systems

Exploiting Virtual Observatory and Information Technology: Techniques for Astronomy

Paper The syntax of the FILENAME is:

Continental Divide National Scenic Trail GIS Program

ParkServe. The Trust for Public Land s. Emmalee Dolfi Gabriel Patterson-King ESRI User Conference 2017

Enabling ENVI. ArcGIS for Server

Information System as a Tool for Marine Spatial Planning The SmartSea Vision and a Prototype

M o n i t o r i n g O c e a n C o l o u r P y t h o n p r o c e d u r e f o r d o w n l o a d

ST-Links. SpatialKit. Version 3.0.x. For ArcMap. ArcMap Extension for Directly Connecting to Spatial Databases. ST-Links Corporation.

CHAPTER 22 GEOGRAPHIC INFORMATION SYSTEMS

git Tutorial Nicola Chiapolini University of St. Gallen September 12, 2017

Troubleshooting Replication and Geodata Service Issues

An ESRI Technical Paper June 2007 An Overview of Distributing Data with Geodatabases

Geodatabase Best Practices. Dave Crawford Erik Hoel

OFFSHORE. Advanced Weather Technology

Rick Ebert & Joseph Mazzarella For the NED Team. Big Data Task Force NASA, Ames Research Center 2016 September 28-30

Identity Management for the LIGO Project

2.6 Complexity Theory for Map-Reduce. Star Joins 2.6. COMPLEXITY THEORY FOR MAP-REDUCE 51

Week 7 Sentiment Analysis, Topic Detection

ON SITE SYSTEMS Chemical Safety Assistant

Tracking Accuracy: An Essential Step to Improve Your Forecasting Process

Outline Oxana Smirnova, Particle Physics 2

Web GIS: Architectural Patterns and Practices. Shannon Kalisky Philip Heede

Do we have a quorum?

Spatial Asset Management

An object-oriented design process. Weather system description. Layered architecture. Process stages. System context and models of use

Attack Graph Modeling and Generation

Qualitative Spatio-Temporal Reasoning & Spatial Database Design

Socket Programming. Daniel Zappala. CS 360 Internet Programming Brigham Young University

Enabling Web GIS. Dal Hunter Jeff Shaner

Business Process Technology Master Seminar

Queuing Analysis. Chapter Copyright 2010 Pearson Education, Inc. Publishing as Prentice Hall

Visualizing Big Data on Maps: Emerging Tools and Techniques. Ilir Bejleri, Sanjay Ranka

Joint MISTRAL/CESI lunch workshop 15 th November 2017

How to Make or Plot a Graph or Chart in Excel

TECDIS and TELchart ECS Weather Overlay Guide

Scaling Magento in the Cloud

Robert D. Borchert GIS Technician

Framework for on an open 3D urban analysis platform based on OGC Web Services

Physics Lab #4: Citizen Science - The Milky Way Project

THE DESIGN AND IMPLEMENTATION OF A WEB SERVICES-BASED APPLICATION FRAMEWORK FOR SEA SURFACE TEMPERATURE INFORMATION

Solving Polynomial Systems in the Cloud with Polynomial Homotopy Continuation

A.C.R.E and. C3S Data Rescue Capacity Building Workshops. December 4-8, 2017 Auckland, New Zealand. Session 3: Rescue of Large Format and Analog Data

Geo-enabling a Transactional Real Estate Management System A case study from the Minnesota Dept. of Transportation

Presentation of the Cooperation Project goals. Nicola Ferrè

Evaluating Physical, Chemical, and Biological Impacts from the Savannah Harbor Expansion Project Cooperative Agreement Number W912HZ

Regional-scale landslide and erosion monitoring utilizing airborne LiDAR change detection analysis

2013 NASCIO Award Submission Category: Cross-Boundary Collaboration and Partnerships. Project Title: Public Safety and Enterprise GIS in Tennessee

CS Data Structures and Algorithm Analysis

Transcription:

Continuous Performance Testing Shopware Developer Conference Kore Nordmann (@koredn) 08. June 2013

About Me Kore Nordmann @koredn

Co-founder of Helping people to create high quality web applications. http://qafoo.com Expert consulting Individual training Get a training on object oriented design for your team!

Outline Motivation Conclusion

Motivation Why should we do performance tests? Locate unknown bottlenecks Mesaure behaviour of the full stack Why should we do that continuously? Find performance regressions Ensure optimizations are persistent

Often used tools Often misused tools siege ApacheBench (ab) Testing for micro-optimizations Evaluating Hello-World-examples of Frameworks Useful tools, I won t talk about xdebug Profiling xhprof Database profiling tools System metrics (Graphite,... )

The problem is more complex Your task: Create a new webshop Assume it s march The deadline is October this year, right before Christmas

A webshop Awesome Shop 0 articles 0.00 Smartphone Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 1337,-- 5 items in stock Comments Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor.

A real tool for performance tests JMeter Complex user paths Concurrend requests Record on proxy Clustering

JMeter 101 Thread Group An execution plan (like a user registration) Controller Controls how samplers are executed (loop, random,... ) Config Element Timer Sampler Configration, optionally from external sources Defining timing constraints for sampler execution Perform the actual work (like HTTP requests)

Getting started Create a test plan Example: What do users actually do on your site? Random browser User registration Sign on Shopping with checkout Commenting products

Automation Ant JMeter integration Automation of your environment Setting up different software versions Testing with different extensions Running different database setups Handling multi-node environments Plain Ant or Puppet, Chef, Vagrant

Apache Ant example 26 < target name= build apc bytecode cache user cache f i l e 27 depends= setup apc bytecode f i l e cache, build 28 description= > Run with APC opcode cache and f i l e based cache. /> 29 30 < target name= build apc bytecode cache user cache apc 31 depends= setup apc bytecode apc cache, b u i l d 32 description= > Run with APC opcode cache and APC based cache. /> 211 < target name= remote exec p a r a l l e l > 212 <subant t a r g e t = $ { t a r g e t } i n h e r i t a l l = t r u e > 213 < f i l e s e t d i r = $ { p r o j e c t. d i r } i n c ludes= server. xml /> 214 </ subant> 215 </ target > 216 217 < target name= remote exec > 218 <sshexec command= $ {command} 219 username= $ { ssh. username } 220 password= $ { ssh. password } 221 host= $ { hostname } 222 trust = true /> 223 </ target >

Apache Ant example 454 < target name= restart host > 455 < antcall target= remote exec > 456 <param name= command value= shutdown r now /> 457 </ a n t c a l l > 458 459 <echo taskname= w a i t f o r message= Wait f o r $ { hostname } to stop... /> 460 < waitfor maxwait= 5 maxwaitunit= minute checkevery= 100 > 461 <not> 462 <http url = http : / / $ { hostname } /> 463 </ not> 464 </ w a i t f o r > 465 466 <echo taskname= w a i t f o r message= Wait f o r $ { hostname } i s up again... /> 467 < waitfor maxwait= 5 maxwaitunit= minute checkevery= 100 > 468 <http url = http : / / $ { hostname } /> 469 </ w a i t f o r > 470 </ target >

Apache Ant example 421 < target name= jmeter depends= settings i n i t, start jmeter /> 422 423 < t a r g e t name= s t a r t jmeter > 424 < antcall target= start jmeter before hook /> 425 426 <jmeter jmeterhome= $ { l o c a l. jmeter.home. d i r } 427 r e s u l t l o g = $ { l o c a l. jmeter. log. f i l e } 428 t e s t p l a n = $ { l o c a l. jmeter. t e s t. d i r } / $ { jmeter. f i l e } > 429 430 <p r op e r ty name= jmeter. data. d i r value= $ { l o c a l. p r o j e c t. data. d i r } /> 431 <property name= jmeter. rampup. time value= $ { jmeter. rampup. time } /> 432 <property name= jmeter. execution. time value= $ { jmeter. execution. time } /> 433 </ jmeter > 434 435 < antcall target= start jmeter after hook /> 436 </ target >

Apache Ant example 351 < target name= backup data from host > 352 <scp r e m o t e f i l e = $ { ssh. username } : $ { ssh. password }@${ hostname } : $ { remote. webserver. e r r o r. log } 353 l o c a l t o f i l e = $ { l o c a l. b u i l d d i r } / $ { hostname} e r r o r. log 354 trust = true /> 355 356 <scp r e m o t e f i l e = $ { ssh. username } : $ { ssh. password }@${ hostname } : $ { remote. webserver. access. log } 357 l o c a l t o f i l e = $ { l o c a l. b u i l d d i r } / $ { hostname} access. log 358 trust = true /> 359 360 <scp r e m o t e f i l e = $ { ssh. username } : $ { ssh. password }@${ hostname } : $ { remote. php. e r r o r. log } 361 l o c a l t o f i l e = $ { l o c a l. b u i l d d i r } / $ { hostname} php errors. log 362 trust = true /> 363 364 <scp r e m o t e f i l e = $ { ssh. username } : $ { ssh. password }@${ hostname } : $ { remote. basedir } / s c r i p t s / load. log 365 l o c a l t o f i l e = $ { l o c a l. b u i l d d i r } / $ { hostname} load. log 366 trust = true /> 367 368 </ target >

Test Setup What do we actually test?

Test Setup iftstat, iftop jmeter Response Times Load Balancer Verify Sessions vmstat, top FrontEnd FrontEnd FrontEnd Profiling, xhprof, Response Times vmstat, top Slave Master Slow Query Log, Services

Hardware Test in a realistic environment If your software runs in the cloud test against virtual environment If you use real hardware, also test against real hardware JMeter might have serious hardware requirements Use real hardware Use the biggest VM available Ensure that not the JMeter hardware is the bottleneck Be sure that the network is not the bottleneck See ifstat, iftop Measure several system metrics See vmstat, top

Continuous Performance Plugins available for: Jenkins Sonar Maintaining all those servers can be expensive

Continuous testing with Jenkins

Questions Common questions: Can we survive christmas? What is the maximum we can accomplish with the current setup? Does (APC XCache MemCache) really help us?

Getting realistic settings Ask for real access logs: Extract exact request model from those Your customer usually only knows very broad values, like: 1.000.000 PIs per month 30.000 sold articles per month 45.000 registrations per month Very seldom, that you get more: Ask for access statistics before Christmas and the ratio compared with regular months Ask for hours with the highest conversion rates Maybe get the aggregated access logs from existing similar shops

Example calculation Customer provided values, for a classic webshop: 1.000.000 PIs per month 30.000 sold articles per month 45.000 registrations per month Per day: 1.000.000/26 = 38.500 (non-business) Per hour: 38.500/12 = 3.200 (national shop) Peak hour: 3.200 8 = 25.500 (18:00 to 19:00) Per second: 25.500/3600 = 7PI/s Add Christmas / Easter bonus Add launch bonus So... 50 PI/s should be safe? Spare resources for scaling are always a business decision Provide with trade-off: Costs vs. downtime / slowness Fail gracefully

Verification Do your requests actually model customer requirements? Compare generated accesss logs with real access logs Compare user registrations / checkouts per hour with requested values

Outline Motivation Conclusion

Conclusion Plan your test scenario Use realisitic thresholds Choose the right tool with care