33

Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Embed Size (px)

Citation preview

Page 1: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati
Page 2: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Chi sono

2

MARCO ZANI – neen

• CEO e founder di neen, hosting company specializzata in managed hosting, high availability e Cloud: servizio fully managed con alto grado di automazione e industrializzazione, ma altrettanta capacità di personalizzazione e tuning.

• 15 anni di esperienza in servizi data center, hosting e Cloud.

• Competenze informatiche trasversali in ambito di programmazione, telecomunicazioni e Intelligenza Artificiale

• Ideatore di neen.do, il software di orchestration neen.

• Neener! Grande appassionato di tecnologia (specialmente opensource) e responsabile R&D in neen. Oggi molto impegnato nella promozione di diverse attività su Openstack, Docker e altre innovative soluzioni PaaS.

Page 3: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Di cosa parlerò

3

• Definizione del problema performance

• Indicatori di riferimento

• Un esempio realistico di stress test su Magento

• Strumenti e configurazioni per gli stress test

• Benchmark e analisi di alcuni test

• Conclusioni e spunti di riflessione

Page 4: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Magento KPI

4

Ancora performance ?

Page 5: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Performance = Velocità ?

5

Page 6: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Performance

6

(SLA) Service Level Agreement

Affidabilitàha hardware e applicativo, dimensionamento, sicurezza, deploynumero incidenti, tempo per accorgersene, tempo di risoluzione: SLA uptime

A volte è un trade-off:

Velocitàdimensionamento, tuning, cachingKPI: Key Performance Indicators (Quali SLA ?)

Prevenire, Monitorare, Intervenire

Page 7: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Velocità

7

Perché è importante ?

Amazon: 100 ms of extra load time caused a 1% drop in sales. (Source: Greg Linden, Amazon)

Yahoo!: 400 ms of extra load time caused a 5 to 9% increase in the number of people that clicked "back" before the page even loaded. (Source: Nicole Sullivan, Yahoo!)

Google: 500 ms of extra load time caused 20% fewer searches. (Source: Marrissa Mayer, Google)

“ “

Page 8: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Apdex

8

Application Performance Index

Is an open standard developed by an alliance of companies. It defines a standard method for reporting and comparing the performance of software applications in computing. Its purpose is to convert measurements into insights about user satisfaction, by specifying a uniform way to analyze and report on the degree to which measured performance meets user expectations.

Page 9: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Apdex

9

Metodo di calcolo

Page 10: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Apdex

10

Pregi e difetti

Page 11: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Contesto

11

Magento 1.9.0.1

• Ubuntu server• Nginx, php5-fpm, MySql• Installazione standard con i moduli required + HttpGzipModule• Disabilitate tutte le cache di Magento• Setup del plugin di Newrelic per analisi / monitoring• Sessioni e cache sul FS• Media nel database (tabella core_file_storage circa 550 MB)

• Web server (neencloud) : 4 vCore Intel 2Ghz, 4 GB Ram, 20 GB SSD• DB server (neencloud) : 2 vCore Intel 2Ghz, 4 GB Ram, 20 GB SSD

• Apdex T-value desiderato: 2 sec

Page 12: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Caching

12

La piramide rovesciata

Statistica 2013 / 200 clienti Agenzie

Deploy Automatici6%

Profiling PHP 14%

Sistemi di Caching 67%

Monitoraggio 100%

Page 13: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Magmi

13

Direct SQL Magento product import

Page 14: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

N98-magerun

14

The swiss army knife for Magento

Page 15: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Siege

15

http load testing and benchmarking utility

Pregi

•Leggero e si installa velocemente•Si usa da command line tool, quindi si può usare senza GUI•Ottimo per fare un load testing veloce

Difetti

•Non ha GUI•Non clusterizzabile•Può dare risultati falsi per i limiti del sistema (ulimit, socket open)•Limiti sul path di navigazione per utente, login ecc.

Page 16: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Siege

16

Configurazione

Partiamo dalla sitemap

curl http://magento.dev.neen.it/sitemap.xml | cat sitemap.xml | sed 's/<loc>/<loc>\n/g' | sed 's/<\/loc>/\n/g' | grep http > urls.txt

Parametri

siege -i -c50 -t5m -d2 -f urls.txt

-c : numero di utenti concorrenti-t : per quanto tempo viene eseguito il benchmark-i : simula “internet”, randomizzando indirizzi-d : delay randomizzato tra 1 e N in secondi tra le richieste effettuate

Page 17: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Siege

17

Test incrementali

Bombardment o Bombardwrapper di siege

Parametri

bombardment [urlfile] [inital # of clients] [inc value] [# of inc] [delay] [timetorun]

Page 18: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Siege

18

Simulare navigazione da loggati

• Definendo login-url in siegerc

login-url = http://magento.dev.neen.it/customer/account/loginPost/ POST login[username][email protected]&login[password]=qKJ4tcaH

• Settando un Cookie permanente

Quindi dobbiamo fare noi il login e poi mettere il cookie come header,

Page 19: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Siege

19

Risultati

Page 20: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Apache Jmeter

20

Pregi

•Scritto in Java, quindi crossplatform•Si possono testare vari servizi (FTP, LDAP,POP), quindi non solo HTTP•Ecosistema esteso dei plugin•Clusterizzabile

Difetti

•Essendo scritto in Java, è abbastanza pesante•Può dare risultati falsi per i limiti del sistema (ulimit, socket open)•Curva di apprendimento elevata

Page 21: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Apache Jmeter

21

Alcuni concetti e parametri utili• Test Plan• WorkBench• Assertion (es: Response assertion)

• Thread Group• Numero dei thread• Ramp-up e periodo di Ramp-up• Numero di esecuzioni del test

• URL Patterns to include• Recording controller > Add > Listener > View Results in Table • Recording controller > Add > Listener > Summary Report

Page 22: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Jmeter

22

Video

Page 23: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Loadimpact

23

.. o altri applicativi commerciali (video)

Page 24: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Loadimpact

24

Grafico FLAT

Page 25: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Loadimpact

25

Grafico CRESCENTE

Page 26: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Loadimpact

26

Grafico ESPONENZIALE

Page 27: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

CONFIGURAZIONE PHP5-FPM SOVRADIMENSIONATA

pm = dynamicpm.max_children = 100pm.start_servers = 5pm.min_spare_servers = 5pm.max_spare_servers = 50

New Relic / Zend server

27

Un sistema mal configurato

Page 28: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

CONFIGURAZIONE PHP5-FPM CORRETTA

pm = dynamicpm.max_children = 8pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 4

New Relic / Zend server

28

Un sistema ben configurato

Page 29: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Test velocità assoluta

29

Scenario di 10 minuti

Page 30: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Effetto caching

30

Scenario di 10 minuti

Page 31: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Conclusioni

31

• Performance ≠ velocità

• Gli stress test vanno associati a dei sistemi di analisi per una corretta interpretazione dei dati

• Gli stessi sistemi di analisi ci possono aiutare nel monitoraggio dei KPI

• Ci sono performance migliorabili tunando le configurazioni degli application server, altri aumentando le risorse in gioco e/o con l’autoscaling, altri ancora aumentando risorse più specifiche (Es: MHz delle CPU)

• I sistemi di di caching, mascherano tutto questo, ma rientrano nel trade off pregi / difetti

Page 32: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

32

GRAZIE! (anche a chi ha corso con noi la MEET MAGENTO RUN).

Page 33: Marco Zani: Come dimensionare Magento per raggiungere i Key Performance Indicator desiderati

Follow us

33

facebook.com/neen.hosting

@neenhosting

linkedin.com/company/neen-srl

neen s.r.l.

Via Mecenate 76/20A - 20138 Milano

T: (+39) 02.45485420

E: [email protected]

Web: www.neen.itBlog: neeners.neen.it