SlideShare ist ein Scribd-Unternehmen logo
1 von 29
N3rd 4 Speed
        Geschwindigkeit ist keine Hexerei. (Johann Nestroy)




                   René Penner
                     @papst23



CPU        [|||||                                  ]
Mem        [|||||||||||||||||                      ]
Conversion [|||||||||||||||||||||||||||||||||||||||]
Agenda

  1. Warum |||||||||||||||||||||||||||||||||||
  2. Messen ||||||||||||||||||||||||||||||||||
  3. Frontend ||||||||||||||||||||||||||||||||
  4. Backend |||||||||||||||||||||||||||||||||
  5. ReverseProxy ||||||||||||||||||||||||||||




Slides [||||||||||||||||||||||||||||||||||||||||||||||||||||||]
Warum

  - Gewinn
     - Google:   500ms langsamer   => -20% Traffic
     - Amazon:   100ms langsamer   => -1% Conversion
     - Mozilla: 2200ms schneller   => +15% Downloads


  - Kosten
     - Traffic & Bandbreite        => weniger
     - Hardwarebedarf              => weniger




Slides [||                                             ]
Warum

  - User Intends
       - Bounce Rate                                    => weniger
       - Seitenaufrufe                                  => mehr


  - Crawlability*
       - Inhalte                                        => schneller
       - Inhalte                                        => mehr




 • Die Performance … hat auf jeden Fall darauf einen Einfluß, mit welcher Frequenz Google crawled.
  (Johannes Beus aka. Sistrix - http://bit.ly/z7Zjfr)

Slides [||||                                                                                         ]
Messen

  -   Page Load Time
  -   Response Size
  -   Response Time (first Bit)
  -   Rendergeschwindigkeit
  -   Gleichzeitige Requests (Lasttest)




Slides [||||||                            ]
Messen

  - Loads.in
  - Pingdom
  - webpagetest.org

  - Firebug
  - Yslow
  - Google Page Speed

  - ab (Apache Benchmark)


Slides [||||||||               ]
Frontend




Slides [||||||||||              ]
Frontend




Slides [||||||||||||              ]
Frontend




Slides [||||||||||||||          ]
Frontend

  - Request minimieren
     - CSS & JS zusammenfassen
     - Inline Images (data:base64)
     - CSS Sprites
  - Requestsize optimieren
     - Bilder komprimieren (Smush.it)
     - JS/CSS Minifier (JSMin, YUI Compressor)




Slides [||||||||||||||||                         ]
Frontend




Slides [||||||||||||||||||      ]
Frontend




Slides [||||||||||||||||||||    ]
Frontend

  - Cache Headers

     mod_expires.c (a2enmod expires)
     ExpiresActive On
     ExpiresByType text/css "access plus 5184000 seconds"

     mod_headers.c (a2enmod headers)
     <filesmatch ".(css)$">
          Header set Cache-Control "max-age=5184000, public"
     </filesmatch>

     E-Tags nicht vergessen ;)



Slides [||||||||||||||||||||||                                 ]
Frontend

                                   Aus dem Cache
                                    - E-Tag match
                                    - Mod. since match




Slides [||||||||||||||||||||||||                         ]
Frontend

                                     Nicht aus dem Cache
                                      - E-Tag no match
                                      - mod since no match




Slides [||||||||||||||||||||||||||                           ]
Frontend

  - gzip

     # console
     # a2enmod deflate
     # service apache2 restart

     #.htaccess
     AddOutputFilterByType DEFLATE text/css




Slides [||||||||||||||||||||||||||||          ]
Frontend

                                         GZIP aus
                                          - 10 KB
                                          - 105ms




Slides [||||||||||||||||||||||||||||||              ]
Frontend

                                           GZIP an
                                            - 2.5 KB
                                            - 79ms




Slides [||||||||||||||||||||||||||||||||               ]
Frontend

  - DOM Elemente – weniger ist mehr
     #naja
     <div id="content">
           <h1><strong><em>Headline</em></strong></h1>
     </div>
     <div id="content">
           <div class="innercontent">
                     <p>lorem ipsum ...</p>
           </div>
     </div>

     #besser
     <h1>Headline</h1>
     <p>lorem ipsum ...</p>




Slides [||||||||||||||||||||||||||||||||||               ]
Frontend

  - CSS Selectoren
        DIV                        =>   schnell
        .myclass                   =>   schnell
        #myid                      =>   schnell
        UL LI A.myclass            =>   langsam
        UL li A                    =>   sehr langsam
        * A                        =>   pain



        UL LI A {color:red}
         3     2     1




 * http://stevesouders.com/efws/css-selectors/universal.php

Slides [||||||||||||||||||||||||||||||||||||                  ]
Backend




Slides [||||||||||||||||||||||||||||||||||||||   ]
Backend

  - MySQL
     -   RAM, RAM, mehr RAM
     -   Indexe prüfen
     -   MySQL Version checken
     -   Dedicated DB Server
     -   mysqltuner.pl (Perl Script)
     -   SLOW QUERYS:
          /etc/mysql/my.cnf

          #log_slow_queries   = /var/log/mysql/mysql-slow.log
          #long_query_time = 1
          #log-queries-not-using-indexes




Slides [||||||||||||||||||||||||||||||||||||||||                ]
Backend

  - Apache & PHP
     -   RAM, RAM, mehr RAM
     -   ACHTUNG: SWAP
     -   .htaccess -> vhosts
     -   Nicht gebrauchte Mods ausschalten
     -   OP-Code Caches: APC / XCache / eAccelerator
     -   mod_pagespeed von Google
     -   Redirects reduzieren!
     -   Alternative Webserver Lighty oder nginx




Slides [||||||||||||||||||||||||||||||||||||||||||     ]
ReverseProxy




 http://www.phpgangsta.de/bessere-performance-mit-einem-reverse-proxy

Slides [||||||||||||||||||||||||||||||||||||||||||||                    ]
ReverseProxy

  - Apache vs. Varnish
     - Requests: 1.000 - Concurrency: 1
     -   Apache:     9.97 Requests per Second (RAM: 50% CPU: 100%)
     -   Varnish: 3003.98 Requests per Second (RAM: 50% CPU: 5%)


     - Requests: 1.000 - Concurrency: 10
     -   Apache:    10.60 Requests per Second (RAM: 95% CPU: 100%)
     -   Varnish: 6391.29 Requests per Second (RAM: 50% CPU: 10%)


     - Requests: 10.000 - Concurrency: 100
     -   Apache: Absturz
     -   Varnish: 6179.76 Requests per Second (RAM: 55% CPU: 15%)




Slides [||||||||||||||||||||||||||||||||||||||||||||||               ]
ReverseProxy
                        -Varnish-

  -   Extrem schnell (asynchron)
  -   Ressourcensparend
  -   Einfache Installation (Ubuntu: 5min)
  -   Caching (in memory)
  -   Load balancing (round robin, random)
  -   Health checking (backend down)
  -   VCL (Varnish configuration language)
  -   ESI (Edge Side Includes)
  -   VMODs (Varnish Modules)


Slides [||||||||||||||||||||||||||||||||||||||||||||||||   ]
ReverseProxy
                           -Varnish-

  - VCL
     - Backends definieren
     - Load Balancing einstellen
     - Cache einstellen
          - Welche URLs sollen gecached werden?
          - Wie lange soll der Cache valid sein?
     - HTTP Header modifizieren




Slides [||||||||||||||||||||||||||||||||||||||||||||||||||   ]
ReverseProxy
                        -Varnish-

  - VMODs
     -   Authentication (HTTP Basic authentication)
     -   DeviceAtlas (Mobile Detection)
     -   Digest (Hashes MD5, SHA1 ...)
     -   Redirect
     -   Redis (DB)
     -   Shield (DDoS Protection)




Slides [||||||||||||||||||||||||||||||||||||||||||||||||||||   ]
ReverseProxy
                                               -Varnish-

  - ESI (Edge Side Includes)

                                     <esi:include src="/header.html" />



      Lorem ipsum
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
      eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
      voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita   <esi:include
      kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
                                                                                      src="/sitebar.html
      Lorem ipsum dolor sit amet, consetetur
                                                                                      " />




Slides [||||||||||||||||||||||||||||||||||||||||||||||||||||||]

Weitere ähnliche Inhalte

Andere mochten auch

Transitor efecto de campo
Transitor efecto de campoTransitor efecto de campo
Transitor efecto de campo
Nestor Velarde
 
Programa encuentro lector CPR Alto Guadalquivir
Programa encuentro lector CPR Alto GuadalquivirPrograma encuentro lector CPR Alto Guadalquivir
Programa encuentro lector CPR Alto Guadalquivir
cpraltoguadalquivir
 
Oficina senid - 2013 - redes sociais na educação - vfinal
Oficina   senid - 2013 - redes sociais na educação - vfinalOficina   senid - 2013 - redes sociais na educação - vfinal
Oficina senid - 2013 - redes sociais na educação - vfinal
Educação Online e em Rede
 
Livro psicologia social_estrategias_politicas_implicacoes
Livro psicologia social_estrategias_politicas_implicacoesLivro psicologia social_estrategias_politicas_implicacoes
Livro psicologia social_estrategias_politicas_implicacoes
Sonival Nery Teixeira
 
El vestit nou de l'emperador-AA2
El vestit nou de l'emperador-AA2El vestit nou de l'emperador-AA2
El vestit nou de l'emperador-AA2
MiquelBleach
 
Nadia Pérez Negrín
Nadia Pérez NegrínNadia Pérez Negrín
Nadia Pérez Negrín
mnegdam
 

Andere mochten auch (20)

Qué sabe hacer vocab intro 2015
Qué sabe hacer vocab intro 2015Qué sabe hacer vocab intro 2015
Qué sabe hacer vocab intro 2015
 
My Report - Color Harmonization
My Report - Color HarmonizationMy Report - Color Harmonization
My Report - Color Harmonization
 
Mateo y angie
Mateo y angieMateo y angie
Mateo y angie
 
Mexico[1]
Mexico[1]Mexico[1]
Mexico[1]
 
Transitor efecto de campo
Transitor efecto de campoTransitor efecto de campo
Transitor efecto de campo
 
presentacion web 1.0 2.0 3.0
presentacion web 1.0 2.0 3.0presentacion web 1.0 2.0 3.0
presentacion web 1.0 2.0 3.0
 
Programa encuentro lector CPR Alto Guadalquivir
Programa encuentro lector CPR Alto GuadalquivirPrograma encuentro lector CPR Alto Guadalquivir
Programa encuentro lector CPR Alto Guadalquivir
 
Herramientas web
Herramientas webHerramientas web
Herramientas web
 
Orientación vocacional
Orientación vocacionalOrientación vocacional
Orientación vocacional
 
Trabajo de mantenimiento
Trabajo de mantenimientoTrabajo de mantenimiento
Trabajo de mantenimiento
 
Oficina senid - 2013 - redes sociais na educação - vfinal
Oficina   senid - 2013 - redes sociais na educação - vfinalOficina   senid - 2013 - redes sociais na educação - vfinal
Oficina senid - 2013 - redes sociais na educação - vfinal
 
3º Trim. 2013 - Lição 12 - A reciprocidade do amor cristão
3º Trim. 2013 - Lição 12 - A reciprocidade do amor cristão3º Trim. 2013 - Lição 12 - A reciprocidade do amor cristão
3º Trim. 2013 - Lição 12 - A reciprocidade do amor cristão
 
Literalma fórum mundial
Literalma fórum mundialLiteralma fórum mundial
Literalma fórum mundial
 
Feliz cumple cami !!!
Feliz cumple cami !!!Feliz cumple cami !!!
Feliz cumple cami !!!
 
Livro psicologia social_estrategias_politicas_implicacoes
Livro psicologia social_estrategias_politicas_implicacoesLivro psicologia social_estrategias_politicas_implicacoes
Livro psicologia social_estrategias_politicas_implicacoes
 
UNIDADES VI Y V
UNIDADES VI Y VUNIDADES VI Y V
UNIDADES VI Y V
 
Diapositivas
Diapositivas Diapositivas
Diapositivas
 
El camell joanot
El camell joanotEl camell joanot
El camell joanot
 
El vestit nou de l'emperador-AA2
El vestit nou de l'emperador-AA2El vestit nou de l'emperador-AA2
El vestit nou de l'emperador-AA2
 
Nadia Pérez Negrín
Nadia Pérez NegrínNadia Pérez Negrín
Nadia Pérez Negrín
 

N3rd 4 speed

  • 1. N3rd 4 Speed Geschwindigkeit ist keine Hexerei. (Johann Nestroy) René Penner @papst23 CPU [||||| ] Mem [||||||||||||||||| ] Conversion [|||||||||||||||||||||||||||||||||||||||]
  • 2. Agenda 1. Warum ||||||||||||||||||||||||||||||||||| 2. Messen |||||||||||||||||||||||||||||||||| 3. Frontend |||||||||||||||||||||||||||||||| 4. Backend ||||||||||||||||||||||||||||||||| 5. ReverseProxy |||||||||||||||||||||||||||| Slides [||||||||||||||||||||||||||||||||||||||||||||||||||||||]
  • 3. Warum - Gewinn - Google: 500ms langsamer => -20% Traffic - Amazon: 100ms langsamer => -1% Conversion - Mozilla: 2200ms schneller => +15% Downloads - Kosten - Traffic & Bandbreite => weniger - Hardwarebedarf => weniger Slides [|| ]
  • 4. Warum - User Intends - Bounce Rate => weniger - Seitenaufrufe => mehr - Crawlability* - Inhalte => schneller - Inhalte => mehr • Die Performance … hat auf jeden Fall darauf einen Einfluß, mit welcher Frequenz Google crawled. (Johannes Beus aka. Sistrix - http://bit.ly/z7Zjfr) Slides [|||| ]
  • 5. Messen - Page Load Time - Response Size - Response Time (first Bit) - Rendergeschwindigkeit - Gleichzeitige Requests (Lasttest) Slides [|||||| ]
  • 6. Messen - Loads.in - Pingdom - webpagetest.org - Firebug - Yslow - Google Page Speed - ab (Apache Benchmark) Slides [|||||||| ]
  • 10. Frontend - Request minimieren - CSS & JS zusammenfassen - Inline Images (data:base64) - CSS Sprites - Requestsize optimieren - Bilder komprimieren (Smush.it) - JS/CSS Minifier (JSMin, YUI Compressor) Slides [|||||||||||||||| ]
  • 13. Frontend - Cache Headers mod_expires.c (a2enmod expires) ExpiresActive On ExpiresByType text/css "access plus 5184000 seconds" mod_headers.c (a2enmod headers) <filesmatch ".(css)$"> Header set Cache-Control "max-age=5184000, public" </filesmatch> E-Tags nicht vergessen ;) Slides [|||||||||||||||||||||| ]
  • 14. Frontend Aus dem Cache - E-Tag match - Mod. since match Slides [|||||||||||||||||||||||| ]
  • 15. Frontend Nicht aus dem Cache - E-Tag no match - mod since no match Slides [|||||||||||||||||||||||||| ]
  • 16. Frontend - gzip # console # a2enmod deflate # service apache2 restart #.htaccess AddOutputFilterByType DEFLATE text/css Slides [|||||||||||||||||||||||||||| ]
  • 17. Frontend GZIP aus - 10 KB - 105ms Slides [|||||||||||||||||||||||||||||| ]
  • 18. Frontend GZIP an - 2.5 KB - 79ms Slides [|||||||||||||||||||||||||||||||| ]
  • 19. Frontend - DOM Elemente – weniger ist mehr #naja <div id="content"> <h1><strong><em>Headline</em></strong></h1> </div> <div id="content"> <div class="innercontent"> <p>lorem ipsum ...</p> </div> </div> #besser <h1>Headline</h1> <p>lorem ipsum ...</p> Slides [|||||||||||||||||||||||||||||||||| ]
  • 20. Frontend - CSS Selectoren DIV => schnell .myclass => schnell #myid => schnell UL LI A.myclass => langsam UL li A => sehr langsam * A => pain UL LI A {color:red} 3 2 1 * http://stevesouders.com/efws/css-selectors/universal.php Slides [|||||||||||||||||||||||||||||||||||| ]
  • 22. Backend - MySQL - RAM, RAM, mehr RAM - Indexe prüfen - MySQL Version checken - Dedicated DB Server - mysqltuner.pl (Perl Script) - SLOW QUERYS: /etc/mysql/my.cnf #log_slow_queries = /var/log/mysql/mysql-slow.log #long_query_time = 1 #log-queries-not-using-indexes Slides [|||||||||||||||||||||||||||||||||||||||| ]
  • 23. Backend - Apache & PHP - RAM, RAM, mehr RAM - ACHTUNG: SWAP - .htaccess -> vhosts - Nicht gebrauchte Mods ausschalten - OP-Code Caches: APC / XCache / eAccelerator - mod_pagespeed von Google - Redirects reduzieren! - Alternative Webserver Lighty oder nginx Slides [|||||||||||||||||||||||||||||||||||||||||| ]
  • 25. ReverseProxy - Apache vs. Varnish - Requests: 1.000 - Concurrency: 1 - Apache: 9.97 Requests per Second (RAM: 50% CPU: 100%) - Varnish: 3003.98 Requests per Second (RAM: 50% CPU: 5%) - Requests: 1.000 - Concurrency: 10 - Apache: 10.60 Requests per Second (RAM: 95% CPU: 100%) - Varnish: 6391.29 Requests per Second (RAM: 50% CPU: 10%) - Requests: 10.000 - Concurrency: 100 - Apache: Absturz - Varnish: 6179.76 Requests per Second (RAM: 55% CPU: 15%) Slides [|||||||||||||||||||||||||||||||||||||||||||||| ]
  • 26. ReverseProxy -Varnish- - Extrem schnell (asynchron) - Ressourcensparend - Einfache Installation (Ubuntu: 5min) - Caching (in memory) - Load balancing (round robin, random) - Health checking (backend down) - VCL (Varnish configuration language) - ESI (Edge Side Includes) - VMODs (Varnish Modules) Slides [|||||||||||||||||||||||||||||||||||||||||||||||| ]
  • 27. ReverseProxy -Varnish- - VCL - Backends definieren - Load Balancing einstellen - Cache einstellen - Welche URLs sollen gecached werden? - Wie lange soll der Cache valid sein? - HTTP Header modifizieren Slides [|||||||||||||||||||||||||||||||||||||||||||||||||| ]
  • 28. ReverseProxy -Varnish- - VMODs - Authentication (HTTP Basic authentication) - DeviceAtlas (Mobile Detection) - Digest (Hashes MD5, SHA1 ...) - Redirect - Redis (DB) - Shield (DDoS Protection) Slides [|||||||||||||||||||||||||||||||||||||||||||||||||||| ]
  • 29. ReverseProxy -Varnish- - ESI (Edge Side Includes) <esi:include src="/header.html" /> Lorem ipsum Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita <esi:include kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. src="/sitebar.html Lorem ipsum dolor sit amet, consetetur " /> Slides [||||||||||||||||||||||||||||||||||||||||||||||||||||||]