SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
Symfony - modern technology in practice
                                       WebExpo 2010


                              Jaroslav Bauml, Pavel Campr

                                     BARTON STUDIO s.r.o.


                                         24 Sep 2010




Jaroslav Bauml, Pavel Campr      Symfony - modern technology in practice   24 Sep 2010   1 / 44
Symfony




    "Full-featured" MVC framework. ... full of buzzwords
             RESTful framework
             RAD framework
             Form framework
             Event framework
            ...




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   2 / 44
Symfony 1.4




    Version 1.4 = Current stable
    Version 2.0 = Preview release
            tomorrow Fabien Potencier 14:30 @ Development Hall




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   3 / 44
Outline

1    Optimization in general
       Optimization
       Optimize page view speed
2    Optimization in PHP
       Apache logs
       Optimization of HTTP layer
       XHProf
       ApacheBench
       PHP accelerators
       APC
3    Optimization in symfony 1.4
       Symfony - environments
       Symfony - live demo
       Caching in symfony

    Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   4 / 44
Optimize




                        NO HELLO WORLD BENCHMARKS!




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   5 / 44
Optimize




   Donald Knuth: ... Premature optimization is the root of all evil ...

... but this statement is not a license to ignore performance altogether.
                 Knuth says: Optimize only inefficient stuff.




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   6 / 44
Optimize




                                Measure and Control




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   7 / 44
Optimize


What?
    User experience ?
    Server load ?
    Page view speed ?
    Memory usage ?
    Costs and Income ?
    ...?

                                  Page view speed




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   8 / 44
1. Measure




                               Find appropriate tool to measure.




 Jaroslav Bauml, Pavel Campr        Symfony - modern technology in practice   24 Sep 2010   9 / 44
1. Measure



    Firebug + Page Speed or similar tools in other browsers
    apachetop
    apache status + ExtentedStatus On
    apache-top.py
    apache log analysis
    ApacheBench
    xhprof




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   10 / 44
Firebug




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   11 / 44
Firebug + Page Speed




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   12 / 44
Apachetop for one host




    Live analysis of an apache log file
    Pro - Easy to configure
    Con - only one host




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   13 / 44
Apache top for multi host




  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   14 / 44
Apache access log - basic benchmarking



Apache configuration:
LogFormat "%h %l %u %t % "% r  " %>s %b  " % { R e f e r e r } i  "  " % { User−Agent } i  " " combined
                        D


Useful log value %D - time spent to serve the request in µs

Output:
127.0.0.154   −−     [ 1 9 / Sep / 2 0 1 0 : 0 8 : 1 6 : 5 1   +0200]   242517 "GET / cs / HTTP / 1 . 1 " 200 121172 "−" " M o z i l l a / 4 . 0
127.0.0.154   −−     [ 1 9 / Sep / 2 0 1 0 : 0 8 : 1 6 : 5 2   +0200]   8947 "GET / s t y l e . css HTTP / 1 . 1 " 200 56903 " h t t p : / / l o c a
127.0.0.154   −−     [ 1 9 / Sep / 2 0 1 0 : 0 8 : 1 6 : 5 2   +0200]   8204 "GET / f r o n t e n d ( screen ) . css HTTP / 1 . 1 " 200 464 " h t t
127.0.0.154   −−     [ 1 9 / Sep / 2 0 1 0 : 0 8 : 1 6 : 5 2   +0200]   8533 "GET / j q u e r y . fancybox . css HTTP / 1 . 1 " 200 5339 " h t t




   Jaroslav Bauml, Pavel Campr                     Symfony - modern technology in practice                            24 Sep 2010        15 / 44
Apache access log - HTTP 404 / Not Found


127.0.0.1   −−   [..   date   ..]   9638   "GET   / p r o d u c t s / 3 4 . j p g HTTP / 1 . 0 " 404 15161 "−" " Seznam Zbozi Robot "
127.0.0.1   −−   [..   date   ..]   9301   "GET   / images / header . j p g HTTP / 1 . 0 " 404 25131 "−" " M o z i l l a / 5 . 0 "
127.0.0.1   −−   [..   date   ..]   8563   "GET   / r o b o t s . t x t HTTP / 1 . 1 " 404 1077 "−" " msnbot / 2 . 0 b (+ h t t p : / / search . m
127.0.0.1   −−   [..   date   ..]   8289   "GET   / f a v i c o n . i c o HTTP / 1 . 1 " 404 1081 "−" " M o z i l l a / 5 . 0 ( c o m p a t i b l e ; G


All requests to nonexistent regular files are passed to a symfony
controller! This is useless and CPU consuming process. Take care of:
      favicon.ico in default location: /favicon.ico
      robots.txt
      css and js files
      images (linked from css, user images, ...)
      old links - you can redirect them (sometimes) to a static 404 page
      ...



  Jaroslav Bauml, Pavel Campr                Symfony - modern technology in practice                                 24 Sep 2010          16 / 44
Apache error log (1)


Error log? We don’t need for performance tuning :-)




more errors ⇒ more anger ⇒ less users ⇒ performance grows!




  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   17 / 44
Apache error log (2)



404 errors are in apache error log too:
[ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ]
    Empty module and / o r a c t i o n a f t e r p a r s i n g t h e URL " / media / t h u m b n a i l / small_em −37. j p g " ( / ) .
[ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ]
    T h i s r e q u e s t has been forwarded t o a 404 e r r o r page by t h e a c t i o n " page / show " .


And other errors:
[ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ]
    A c t i o n " comment / l i s t " does n o t e x i s t .
[ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ]
    Unknown r e c o r d p r o p e r t y / r e l a t e d component " keywords " on " Page "
[ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ]
   PDO Connection E r r o r : SQLSTATE[ 0 8 0 0 4 ] [ 1 0 4 0 ] Too many c o n n e c t i o n s




   Jaroslav Bauml, Pavel Campr                  Symfony - modern technology in practice                             24 Sep 2010          18 / 44
Optimization of HTTP layer




Page view
Number of HTTP Requests. (X)HTML document and threescore of
images, styles and javascripts.




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   19 / 44
Optimization of HTTP layer




    Leverage HTTP caching for cacheble resource
            Expires and Cache-Control: max-age
            Last-Modified and ETag




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   20 / 44
Optimization of HTTP layer




    Minimize request count
            Avoid 404 requests
            Combine javascripts
            Combine CSSs




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   21 / 44
Optimization of HTTP layer




    Combine images using CSS sprites
    Minimize javascripts and CSSs
    Gzip outputs
    Parallelize downloads across hostnames (cookieless domain)
    served by statically configured apache or fast server (nginx).




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   22 / 44
XHProf




XHProf1 - hierarchical profiler for PHP
Data collection is implemented in C as a PHP extension.
User interface is in PHP.
Not implemented for Windows, works on Linux/FreeBSD, expected to
work on Mac OS.




   1
    Open sourced in March 2009, originally developed at Facebook.
http://pecl.php.net/package/xhprof | http://mirror.facebook.net/facebook/xhprof
  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   23 / 44
XHProf - Features



Reporting function-level inclusive and exclusive:
     wall times
     memory usage
     CPU times
     number of calls for each function
Additionally, XHProf can compare two runs and aggregate results from
multiple runs.




  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   24 / 44
ApacheBench




ApacheBench (ab) 2
command line tool for measuring the performance of HTTP web
servers
Gives an idea about the performance of HTTP server:
       requests per second
       time per request - min, mean, median, max




  2
      bundled with Apache web server
  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   25 / 44
ApacheBench - example 1
# ab −n 20 −c 1 h t t p : / / l o c a l h o s t /
...
Document Path :                 /
Document Length :               22812 b y t e s

Concurrency L e v e l :          1
Time taken f o r t e s t s :     0.580 seconds
Complete r e q u e s t s :       20
Total transferred :              461520 b y t e s
HTML t r a n s f e r r e d :     456240 b y t e s
Requests per second :            34.48 [ # / sec ] ( mean )
Time per r e q u e s t :         29.000 [ ms ] ( mean )
Time per r e q u e s t :         29.000 [ ms ] ( mean , across a l l c o n c u r r e n t r e q u e s t s )
Transfer rate :                  777.07 [ Kbytes / sec ] r e c e i v e d

Connection Times (ms)
              min mean[+/−sd ] median                   max
Connect :       0     0  0.0      0                       0
Processing :   26   29   2.2     28                      35
Waiting :      26   28   2.2     28                      34
Total :        27   29   2.2     29                      35

Percentage o f t h e r e q u e s t s served w i t h i n a c e r t a i n t i m e (ms)
  50%     29
  66%     30
  75%     30
  80%     30
  90%     34
  95%     35
  98%     35
  99%     35
 100%     35 ( l o n g e s t r e q u e s t )

    Jaroslav Bauml, Pavel Campr              Symfony - modern technology in practice                         24 Sep 2010   26 / 44
ApacheBench - example 2
# ab −n 20 −c 10 h t t p : / / l o c a l h o s t /
...
Document Path :                /
Document Length :              22812 b y t e s

Concurrency L e v e l :           10
Time taken f o r t e s t s :      0.254 seconds
Complete r e q u e s t s :        20
Total transferred :               461520 b y t e s
HTML t r a n s f e r r e d :      456240 b y t e s
Requests per second :             78.86 [ # / sec ] ( mean )
Time per r e q u e s t :          126.807 [ ms ] ( mean )
Time per r e q u e s t :          12.681 [ ms ] ( mean , across a l l c o n c u r r e n t r e q u e s t s )
Transfer rate :                   1777.12 [ Kbytes / sec ] r e c e i v e d

Connection Times (ms)
              min mean[+/−sd ] median                    max
Connect :       0     0  0.3      0                        1
Processing :   55 108 49.4      103                      253
Waiting :      54 108 49.4      103                      253
Total :        55 109 49.4      105                      253

Percentage o f t h e r e q u e s t s served w i t h i n a c e r t a i n t i m e (ms)
  50%    105
  66%    123
  75%    128
  80%    131
  90%    203
  95%    253
  98%    253
  99%    253
 100%    253 ( l o n g e s t r e q u e s t )

    Jaroslav Bauml, Pavel Campr               Symfony - modern technology in practice                         24 Sep 2010   27 / 44
PHP accelerators




PHP accelerator
is a PHP extension, improves the performance. Usually works by
caching the compiled bytecode of PHP scripts.

     no parsing and compiling of PHP scripts on each request
     cached bytecode is stored in shared memory, no reads from a
     disk




  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   28 / 44
PHP accelerators - list




      APC1 - Alternative PHP Cache, support for PHP 5.3, built-in for
      PHP 6
      eAccelerator2 - support for PHP 5.3
      XCache3 - support for PHP 5.3
      ...




  1
    http://php.net/manual/book.apc.php
  2
    http://eaccelerator.net
  3
    http://xcache.lighttpd.net
  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   29 / 44
APC - Runtime configuration



Serious users should consider tuning of APC parameters, primarily:
     apc.shm_size - memory allocated to APC
     apc.stat - check if a file has been modified
Further tuning:
     apc.filters - to be cached or not to be cached (multiple regexp for
     filenames)




  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   30 / 44
APC - Configuration for symfony



APC runtime configuration suitable for symfony projects:
# Use 96MB f o r APC
apc . shm_size=96

# D i s a b l e f i l e m o d i f i c a t i o n check
apc . s t a t =0


# A l l f i l e n a m e s are cached by d e f a u l t
apc . c a c h e _ b y _ d e f a u l t =1

# L i s t o f a comma      −separated POSIX extended r e g u l a r e x p r e s s i o n s .
# I f any p a t t e r n matches t h e f i l e n a m e , t h e f i l e w i l l n o t be cached .
apc . f i l t e r s = "−dev,−s t a g i n g ,− t e s t , −  . yml$ "




    Jaroslav Bauml, Pavel Campr                     Symfony - modern technology in practice       24 Sep 2010   31 / 44
APC - apc.php interface - cache information




  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   32 / 44
APC - apc.php interface - wrong configuration




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   33 / 44
APC - apc.php interface - list of cached entries




  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   34 / 44
APC - User Cache


APC User cache
is a key-value data store which persists between requests.
It’s good for caching when used wisely.

<?php
  function slow_function ( ) {
    s l e e p ( 1 ) ; / / r e a l l y hard j o b here
    r e t u r n a r r a y ( ’ what ’ => ’ webexpo ’ , ’ where ’ => ’ Prague ’ ) ;
  }

   $apc_key = ’ my_data ’ ;
   $data = a p c _ f e t c h ( $apc_key , $success ) ;

   i f ( ! $success ) {
       $data = s l o w _ f u n c t i o n ( ) ;
       a p c _ s t o r e ( $apc_key , $data ) ;
   }

   echo ’ Welcome a t ’ . $data [ ’ what ’ ] . ’ i n ’ . $data [ ’ where ’ ] ;




    Jaroslav Bauml, Pavel Campr                   Symfony - modern technology in practice   24 Sep 2010   35 / 44
APC with Apache web server



APC tuning with Apache web server
Some APC configuration options can be different for each VirtualHost

< V i r t u a l H o s t ∗:80 >

              ServerName www. webexpo . cz

              # we can d i s a b l e APC f o r t h i s domain by u s i n g v a l u e " 0 "
              php_admin_value apc . enabled 1

              # t o enable f i l e m o d i f i c a t i o n check , use " 1 "
              php_admin_value apc . s t a t 1

               .....

</ V i r t u a l H o s t >




     Jaroslav Bauml, Pavel Campr                Symfony - modern technology in practice      24 Sep 2010   36 / 44
APC is awesome!

PHP 5.3.2 1

 case        apc.enabled = 0                   apc.enabled = 1                     request time
                                       apc.stat = 1             apc.stat = 0          with APC
        1                   256 ms             85 ms                    81 ms               32 %
        2                   288 ms            104 ms                   100 ms               35 %

PHP 5.2.6 2

 case        apc.enabled = 0                   apc.enabled = 1                     request time
                                       apc.stat = 1             apc.stat = 0          with APC
        1                   277 ms               81 ms                     79 ms            29 %
        2                   297 ms               95 ms                     93 ms            31 %

  1
      OS Debian, PHP 5.3.2-2, APC 3.1.3p1
  2
      OS Debian, PHP 5.2.6-1, APC 3.0.19
  Jaroslav Bauml, Pavel Campr    Symfony - modern technology in practice            24 Sep 2010   37 / 44
Symfony - environments




                                          dev       staging          prod
                               cache        -             +                +
                               log          +             +                -
                               debug        +             +                -
                               stats        -             -                +




 Jaroslav Bauml, Pavel Campr     Symfony - modern technology in practice       24 Sep 2010   38 / 44
Symfony - live demo




                                         Live Demo




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   39 / 44
Caching in symfony - page




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   40 / 44
Caching in symfony - action




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   41 / 44
Caching in symfony - partial




  Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   42 / 44
Caching in symfony




                                         Live Demo




 Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   43 / 44
Thank you!



       Jaroslav Bauml / bauml@bartonstudio.cz
     Pavel Campr / campr@bartonstudio.cz / @PavelCampr



                               www.bartonstudio.cz




Jaroslav Bauml, Pavel Campr   Symfony - modern technology in practice   24 Sep 2010   44 / 44

Más contenido relacionado

La actualidad más candente

[233] level 2 network programming using packet ngin rtos
[233] level 2 network programming using packet ngin rtos[233] level 2 network programming using packet ngin rtos
[233] level 2 network programming using packet ngin rtosNAVER D2
 
Web Server Deathmatch 2009 Erlang Factory Joe Williams
Web Server Deathmatch 2009 Erlang Factory Joe WilliamsWeb Server Deathmatch 2009 Erlang Factory Joe Williams
Web Server Deathmatch 2009 Erlang Factory Joe Williamslogicalstack
 
SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking systemJesse Vincent
 
Rapid Application Design in Financial Services
Rapid Application Design in Financial ServicesRapid Application Design in Financial Services
Rapid Application Design in Financial ServicesAerospike
 
HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?Alessandro Nadalin
 
Trivadis TechEvent 2017 With the CLI through the Oracle Cloud Martin Berger
Trivadis TechEvent 2017 With the CLI through the Oracle Cloud Martin BergerTrivadis TechEvent 2017 With the CLI through the Oracle Cloud Martin Berger
Trivadis TechEvent 2017 With the CLI through the Oracle Cloud Martin BergerTrivadis
 
Troubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issuesTroubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issuesMichael Klishin
 
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014Amazon Web Services
 
Observable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJSObservable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJSYunong Xiao
 
HipHop VM: overclocking Symfony
HipHop VM: overclocking SymfonyHipHop VM: overclocking Symfony
HipHop VM: overclocking SymfonyVadim Borodavko
 
Implementation of community package manager
Implementation of community package managerImplementation of community package manager
Implementation of community package managerTimur Safin
 
Considerations for building your private cloud folsom update 041513
Considerations for building your private cloud   folsom update 041513Considerations for building your private cloud   folsom update 041513
Considerations for building your private cloud folsom update 041513OpenStack Foundation
 
Deploying with JRuby
Deploying with JRubyDeploying with JRuby
Deploying with JRubyJoe Kutner
 
New Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingNew Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingScyllaDB
 
Katello on TorqueBox
Katello on TorqueBoxKatello on TorqueBox
Katello on TorqueBoxlzap
 

La actualidad más candente (20)

Caching on the Edge
Caching on the EdgeCaching on the Edge
Caching on the Edge
 
[233] level 2 network programming using packet ngin rtos
[233] level 2 network programming using packet ngin rtos[233] level 2 network programming using packet ngin rtos
[233] level 2 network programming using packet ngin rtos
 
Python at Facebook
Python at FacebookPython at Facebook
Python at Facebook
 
Web Server Deathmatch 2009 Erlang Factory Joe Williams
Web Server Deathmatch 2009 Erlang Factory Joe WilliamsWeb Server Deathmatch 2009 Erlang Factory Joe Williams
Web Server Deathmatch 2009 Erlang Factory Joe Williams
 
SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking system
 
Techniques for Preserving Scientific Software Executions: Preserve the Mess o...
Techniques for Preserving Scientific Software Executions: Preserve the Mess o...Techniques for Preserving Scientific Software Executions: Preserve the Mess o...
Techniques for Preserving Scientific Software Executions: Preserve the Mess o...
 
4 Sessions
4 Sessions4 Sessions
4 Sessions
 
Rapid Application Design in Financial Services
Rapid Application Design in Financial ServicesRapid Application Design in Financial Services
Rapid Application Design in Financial Services
 
HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?HTTP colon slash slash: the end of the road?
HTTP colon slash slash: the end of the road?
 
Trivadis TechEvent 2017 With the CLI through the Oracle Cloud Martin Berger
Trivadis TechEvent 2017 With the CLI through the Oracle Cloud Martin BergerTrivadis TechEvent 2017 With the CLI through the Oracle Cloud Martin Berger
Trivadis TechEvent 2017 With the CLI through the Oracle Cloud Martin Berger
 
Troubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issuesTroubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issues
 
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
 
Observable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJSObservable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJS
 
HipHop VM: overclocking Symfony
HipHop VM: overclocking SymfonyHipHop VM: overclocking Symfony
HipHop VM: overclocking Symfony
 
Implementation of community package manager
Implementation of community package managerImplementation of community package manager
Implementation of community package manager
 
Considerations for building your private cloud folsom update 041513
Considerations for building your private cloud   folsom update 041513Considerations for building your private cloud   folsom update 041513
Considerations for building your private cloud folsom update 041513
 
Streams for the Web
Streams for the WebStreams for the Web
Streams for the Web
 
Deploying with JRuby
Deploying with JRubyDeploying with JRuby
Deploying with JRuby
 
New Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingNew Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using Tracing
 
Katello on TorqueBox
Katello on TorqueBoxKatello on TorqueBox
Katello on TorqueBox
 

Destacado

Technology Slideshow
Technology SlideshowTechnology Slideshow
Technology Slideshowguest5e3f255
 
Technology slideshow
Technology slideshowTechnology slideshow
Technology slideshowm1crutcher
 
Technology in 2013 ppt
Technology in 2013 pptTechnology in 2013 ppt
Technology in 2013 pptDuncan Elder
 
Modern Technology Presentation Agc Oct 2010
Modern Technology Presentation Agc Oct  2010Modern Technology Presentation Agc Oct  2010
Modern Technology Presentation Agc Oct 2010Brayman Construction
 
How technology has changed our lives
How technology has changed our livesHow technology has changed our lives
How technology has changed our livesadriannedraughn
 
disadvantages of modern technology
disadvantages of modern technologydisadvantages of modern technology
disadvantages of modern technologyDatta Vinay
 
Advantages and Disadvantages of Technology
Advantages and Disadvantages of TechnologyAdvantages and Disadvantages of Technology
Advantages and Disadvantages of TechnologyPave Maris Cortez
 
New Technologies in our daily life
New Technologies in our daily lifeNew Technologies in our daily life
New Technologies in our daily lifeEcommaster.es
 
Impact of Technology on Society
Impact of Technology on SocietyImpact of Technology on Society
Impact of Technology on SocietyDulaj91
 
Quick & Dirty Tips for : Better PowerPoint Presentations Faster
Quick & Dirty Tips for : Better PowerPoint Presentations FasterQuick & Dirty Tips for : Better PowerPoint Presentations Faster
Quick & Dirty Tips for : Better PowerPoint Presentations FasterEugene Cheng
 
Email Marketing 101: The Welcome Email
Email Marketing 101: The Welcome EmailEmail Marketing 101: The Welcome Email
Email Marketing 101: The Welcome EmailSendGrid
 
The Science of Email Marketing
The Science of Email MarketingThe Science of Email Marketing
The Science of Email MarketingHubSpot
 
Computer technology power point
Computer technology power pointComputer technology power point
Computer technology power pointoacore2
 
The effect of technology on today's society ppt
The effect of technology on today's society pptThe effect of technology on today's society ppt
The effect of technology on today's society pptoacore
 
Social Proof Tips to Boost Landing Page Conversions
Social Proof Tips to Boost Landing Page ConversionsSocial Proof Tips to Boost Landing Page Conversions
Social Proof Tips to Boost Landing Page ConversionsAngie Schottmuller
 
Pitching Ideas: How to sell your ideas to others
Pitching Ideas: How to sell your ideas to othersPitching Ideas: How to sell your ideas to others
Pitching Ideas: How to sell your ideas to othersJeroen van Geel
 
Technology Presentation
Technology PresentationTechnology Presentation
Technology Presentationplandeen
 

Destacado (20)

Technology Slideshow
Technology SlideshowTechnology Slideshow
Technology Slideshow
 
Technology slideshow
Technology slideshowTechnology slideshow
Technology slideshow
 
Technology in 2013 ppt
Technology in 2013 pptTechnology in 2013 ppt
Technology in 2013 ppt
 
Modern Technology Presentation Agc Oct 2010
Modern Technology Presentation Agc Oct  2010Modern Technology Presentation Agc Oct  2010
Modern Technology Presentation Agc Oct 2010
 
How technology has changed our lives
How technology has changed our livesHow technology has changed our lives
How technology has changed our lives
 
disadvantages of modern technology
disadvantages of modern technologydisadvantages of modern technology
disadvantages of modern technology
 
Technology management
Technology managementTechnology management
Technology management
 
Advantages and Disadvantages of Technology
Advantages and Disadvantages of TechnologyAdvantages and Disadvantages of Technology
Advantages and Disadvantages of Technology
 
New Technologies in our daily life
New Technologies in our daily lifeNew Technologies in our daily life
New Technologies in our daily life
 
Impact of Technology on Society
Impact of Technology on SocietyImpact of Technology on Society
Impact of Technology on Society
 
The Ultimate Freebies Guide for Presentations by @damonify
The Ultimate Freebies Guide for Presentations by @damonifyThe Ultimate Freebies Guide for Presentations by @damonify
The Ultimate Freebies Guide for Presentations by @damonify
 
Quick & Dirty Tips for : Better PowerPoint Presentations Faster
Quick & Dirty Tips for : Better PowerPoint Presentations FasterQuick & Dirty Tips for : Better PowerPoint Presentations Faster
Quick & Dirty Tips for : Better PowerPoint Presentations Faster
 
Email Marketing 101: The Welcome Email
Email Marketing 101: The Welcome EmailEmail Marketing 101: The Welcome Email
Email Marketing 101: The Welcome Email
 
Brand New World
Brand New WorldBrand New World
Brand New World
 
The Science of Email Marketing
The Science of Email MarketingThe Science of Email Marketing
The Science of Email Marketing
 
Computer technology power point
Computer technology power pointComputer technology power point
Computer technology power point
 
The effect of technology on today's society ppt
The effect of technology on today's society pptThe effect of technology on today's society ppt
The effect of technology on today's society ppt
 
Social Proof Tips to Boost Landing Page Conversions
Social Proof Tips to Boost Landing Page ConversionsSocial Proof Tips to Boost Landing Page Conversions
Social Proof Tips to Boost Landing Page Conversions
 
Pitching Ideas: How to sell your ideas to others
Pitching Ideas: How to sell your ideas to othersPitching Ideas: How to sell your ideas to others
Pitching Ideas: How to sell your ideas to others
 
Technology Presentation
Technology PresentationTechnology Presentation
Technology Presentation
 

Similar a Symfony - modern technology in practice, Webexpo Prague

OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebula Project
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesRobert Lemke
 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011Alessandro Nadalin
 
Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3Jean-Frederic Clere
 
Clientside/Offline (onefile) Lecture Player in a Web Browser
Clientside/Offline (onefile) Lecture Player in a Web BrowserClientside/Offline (onefile) Lecture Player in a Web Browser
Clientside/Offline (onefile) Lecture Player in a Web BrowserTokyo University of Science
 
DotDotPwn v3.0 [GuadalajaraCON 2012]
DotDotPwn v3.0 [GuadalajaraCON 2012]DotDotPwn v3.0 [GuadalajaraCON 2012]
DotDotPwn v3.0 [GuadalajaraCON 2012]Websec México, S.C.
 
Chicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyChicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyMediafly
 
From Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHPFrom Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHPAlbert Chen
 
Getting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and SymfonyGetting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and SymfonyAndré Rømcke
 
Logging & Metrics with Docker
Logging & Metrics with DockerLogging & Metrics with Docker
Logging & Metrics with DockerStefan Zier
 
Academy PRO: Node.js alternative stacks. Lecture 3
Academy PRO: Node.js alternative stacks. Lecture 3Academy PRO: Node.js alternative stacks. Lecture 3
Academy PRO: Node.js alternative stacks. Lecture 3Binary Studio
 
Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2Merixstudio
 
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)Alejandro Hernández
 
Exploring the Internet of Things Using Ruby
Exploring the Internet of Things Using RubyExploring the Internet of Things Using Ruby
Exploring the Internet of Things Using RubyMike Hagedorn
 
Ensemble oscon 2011
Ensemble oscon 2011Ensemble oscon 2011
Ensemble oscon 2011OSCON Byrum
 
Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...
Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...
Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...NETWAYS
 
Puppet Camp Berlin 2015: Puppet at the center of everything - with a little h...
Puppet Camp Berlin 2015: Puppet at the center of everything - with a little h...Puppet Camp Berlin 2015: Puppet at the center of everything - with a little h...
Puppet Camp Berlin 2015: Puppet at the center of everything - with a little h...Puppet
 
Apache Beam (incubating)
Apache Beam (incubating)Apache Beam (incubating)
Apache Beam (incubating)Apache Apex
 

Similar a Symfony - modern technology in practice, Webexpo Prague (20)

OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011
 
Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3Tomcat from a cluster to the cloud on RP3
Tomcat from a cluster to the cloud on RP3
 
Cloud RPI4 tomcat ARM64
Cloud RPI4 tomcat ARM64Cloud RPI4 tomcat ARM64
Cloud RPI4 tomcat ARM64
 
Clientside/Offline (onefile) Lecture Player in a Web Browser
Clientside/Offline (onefile) Lecture Player in a Web BrowserClientside/Offline (onefile) Lecture Player in a Web Browser
Clientside/Offline (onefile) Lecture Player in a Web Browser
 
Guadalajara con 2012
Guadalajara con 2012Guadalajara con 2012
Guadalajara con 2012
 
DotDotPwn v3.0 [GuadalajaraCON 2012]
DotDotPwn v3.0 [GuadalajaraCON 2012]DotDotPwn v3.0 [GuadalajaraCON 2012]
DotDotPwn v3.0 [GuadalajaraCON 2012]
 
Chicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyChicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - Mediafly
 
From Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHPFrom Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHP
 
Getting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and SymfonyGetting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and Symfony
 
Logging & Metrics with Docker
Logging & Metrics with DockerLogging & Metrics with Docker
Logging & Metrics with Docker
 
Academy PRO: Node.js alternative stacks. Lecture 3
Academy PRO: Node.js alternative stacks. Lecture 3Academy PRO: Node.js alternative stacks. Lecture 3
Academy PRO: Node.js alternative stacks. Lecture 3
 
Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2
 
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
 
Exploring the Internet of Things Using Ruby
Exploring the Internet of Things Using RubyExploring the Internet of Things Using Ruby
Exploring the Internet of Things Using Ruby
 
Ensemble oscon 2011
Ensemble oscon 2011Ensemble oscon 2011
Ensemble oscon 2011
 
Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...
Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...
Puppet Camp Berlin 2015: Pedro Pessoa | Puppet at the center of everything - ...
 
Puppet Camp Berlin 2015: Puppet at the center of everything - with a little h...
Puppet Camp Berlin 2015: Puppet at the center of everything - with a little h...Puppet Camp Berlin 2015: Puppet at the center of everything - with a little h...
Puppet Camp Berlin 2015: Puppet at the center of everything - with a little h...
 
Apache Beam (incubating)
Apache Beam (incubating)Apache Beam (incubating)
Apache Beam (incubating)
 

Último

How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 

Último (20)

How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 

Symfony - modern technology in practice, Webexpo Prague

  • 1. Symfony - modern technology in practice WebExpo 2010 Jaroslav Bauml, Pavel Campr BARTON STUDIO s.r.o. 24 Sep 2010 Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 1 / 44
  • 2. Symfony "Full-featured" MVC framework. ... full of buzzwords RESTful framework RAD framework Form framework Event framework ... Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 2 / 44
  • 3. Symfony 1.4 Version 1.4 = Current stable Version 2.0 = Preview release tomorrow Fabien Potencier 14:30 @ Development Hall Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 3 / 44
  • 4. Outline 1 Optimization in general Optimization Optimize page view speed 2 Optimization in PHP Apache logs Optimization of HTTP layer XHProf ApacheBench PHP accelerators APC 3 Optimization in symfony 1.4 Symfony - environments Symfony - live demo Caching in symfony Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 4 / 44
  • 5. Optimize NO HELLO WORLD BENCHMARKS! Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 5 / 44
  • 6. Optimize Donald Knuth: ... Premature optimization is the root of all evil ... ... but this statement is not a license to ignore performance altogether. Knuth says: Optimize only inefficient stuff. Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 6 / 44
  • 7. Optimize Measure and Control Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 7 / 44
  • 8. Optimize What? User experience ? Server load ? Page view speed ? Memory usage ? Costs and Income ? ...? Page view speed Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 8 / 44
  • 9. 1. Measure Find appropriate tool to measure. Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 9 / 44
  • 10. 1. Measure Firebug + Page Speed or similar tools in other browsers apachetop apache status + ExtentedStatus On apache-top.py apache log analysis ApacheBench xhprof Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 10 / 44
  • 11. Firebug Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 11 / 44
  • 12. Firebug + Page Speed Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 12 / 44
  • 13. Apachetop for one host Live analysis of an apache log file Pro - Easy to configure Con - only one host Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 13 / 44
  • 14. Apache top for multi host Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 14 / 44
  • 15. Apache access log - basic benchmarking Apache configuration: LogFormat "%h %l %u %t % "% r " %>s %b " % { R e f e r e r } i " " % { User−Agent } i " " combined D Useful log value %D - time spent to serve the request in µs Output: 127.0.0.154 −− [ 1 9 / Sep / 2 0 1 0 : 0 8 : 1 6 : 5 1 +0200] 242517 "GET / cs / HTTP / 1 . 1 " 200 121172 "−" " M o z i l l a / 4 . 0 127.0.0.154 −− [ 1 9 / Sep / 2 0 1 0 : 0 8 : 1 6 : 5 2 +0200] 8947 "GET / s t y l e . css HTTP / 1 . 1 " 200 56903 " h t t p : / / l o c a 127.0.0.154 −− [ 1 9 / Sep / 2 0 1 0 : 0 8 : 1 6 : 5 2 +0200] 8204 "GET / f r o n t e n d ( screen ) . css HTTP / 1 . 1 " 200 464 " h t t 127.0.0.154 −− [ 1 9 / Sep / 2 0 1 0 : 0 8 : 1 6 : 5 2 +0200] 8533 "GET / j q u e r y . fancybox . css HTTP / 1 . 1 " 200 5339 " h t t Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 15 / 44
  • 16. Apache access log - HTTP 404 / Not Found 127.0.0.1 −− [.. date ..] 9638 "GET / p r o d u c t s / 3 4 . j p g HTTP / 1 . 0 " 404 15161 "−" " Seznam Zbozi Robot " 127.0.0.1 −− [.. date ..] 9301 "GET / images / header . j p g HTTP / 1 . 0 " 404 25131 "−" " M o z i l l a / 5 . 0 " 127.0.0.1 −− [.. date ..] 8563 "GET / r o b o t s . t x t HTTP / 1 . 1 " 404 1077 "−" " msnbot / 2 . 0 b (+ h t t p : / / search . m 127.0.0.1 −− [.. date ..] 8289 "GET / f a v i c o n . i c o HTTP / 1 . 1 " 404 1081 "−" " M o z i l l a / 5 . 0 ( c o m p a t i b l e ; G All requests to nonexistent regular files are passed to a symfony controller! This is useless and CPU consuming process. Take care of: favicon.ico in default location: /favicon.ico robots.txt css and js files images (linked from css, user images, ...) old links - you can redirect them (sometimes) to a static 404 page ... Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 16 / 44
  • 17. Apache error log (1) Error log? We don’t need for performance tuning :-) more errors ⇒ more anger ⇒ less users ⇒ performance grows! Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 17 / 44
  • 18. Apache error log (2) 404 errors are in apache error log too: [ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ] Empty module and / o r a c t i o n a f t e r p a r s i n g t h e URL " / media / t h u m b n a i l / small_em −37. j p g " ( / ) . [ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ] T h i s r e q u e s t has been forwarded t o a 404 e r r o r page by t h e a c t i o n " page / show " . And other errors: [ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ] A c t i o n " comment / l i s t " does n o t e x i s t . [ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ] Unknown r e c o r d p r o p e r t y / r e l a t e d component " keywords " on " Page " [ . . date . . ] [ e r r o r ] [ c l i e n t 1 2 7 . 0 . 0 . 1 ] PDO Connection E r r o r : SQLSTATE[ 0 8 0 0 4 ] [ 1 0 4 0 ] Too many c o n n e c t i o n s Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 18 / 44
  • 19. Optimization of HTTP layer Page view Number of HTTP Requests. (X)HTML document and threescore of images, styles and javascripts. Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 19 / 44
  • 20. Optimization of HTTP layer Leverage HTTP caching for cacheble resource Expires and Cache-Control: max-age Last-Modified and ETag Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 20 / 44
  • 21. Optimization of HTTP layer Minimize request count Avoid 404 requests Combine javascripts Combine CSSs Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 21 / 44
  • 22. Optimization of HTTP layer Combine images using CSS sprites Minimize javascripts and CSSs Gzip outputs Parallelize downloads across hostnames (cookieless domain) served by statically configured apache or fast server (nginx). Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 22 / 44
  • 23. XHProf XHProf1 - hierarchical profiler for PHP Data collection is implemented in C as a PHP extension. User interface is in PHP. Not implemented for Windows, works on Linux/FreeBSD, expected to work on Mac OS. 1 Open sourced in March 2009, originally developed at Facebook. http://pecl.php.net/package/xhprof | http://mirror.facebook.net/facebook/xhprof Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 23 / 44
  • 24. XHProf - Features Reporting function-level inclusive and exclusive: wall times memory usage CPU times number of calls for each function Additionally, XHProf can compare two runs and aggregate results from multiple runs. Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 24 / 44
  • 25. ApacheBench ApacheBench (ab) 2 command line tool for measuring the performance of HTTP web servers Gives an idea about the performance of HTTP server: requests per second time per request - min, mean, median, max 2 bundled with Apache web server Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 25 / 44
  • 26. ApacheBench - example 1 # ab −n 20 −c 1 h t t p : / / l o c a l h o s t / ... Document Path : / Document Length : 22812 b y t e s Concurrency L e v e l : 1 Time taken f o r t e s t s : 0.580 seconds Complete r e q u e s t s : 20 Total transferred : 461520 b y t e s HTML t r a n s f e r r e d : 456240 b y t e s Requests per second : 34.48 [ # / sec ] ( mean ) Time per r e q u e s t : 29.000 [ ms ] ( mean ) Time per r e q u e s t : 29.000 [ ms ] ( mean , across a l l c o n c u r r e n t r e q u e s t s ) Transfer rate : 777.07 [ Kbytes / sec ] r e c e i v e d Connection Times (ms) min mean[+/−sd ] median max Connect : 0 0 0.0 0 0 Processing : 26 29 2.2 28 35 Waiting : 26 28 2.2 28 34 Total : 27 29 2.2 29 35 Percentage o f t h e r e q u e s t s served w i t h i n a c e r t a i n t i m e (ms) 50% 29 66% 30 75% 30 80% 30 90% 34 95% 35 98% 35 99% 35 100% 35 ( l o n g e s t r e q u e s t ) Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 26 / 44
  • 27. ApacheBench - example 2 # ab −n 20 −c 10 h t t p : / / l o c a l h o s t / ... Document Path : / Document Length : 22812 b y t e s Concurrency L e v e l : 10 Time taken f o r t e s t s : 0.254 seconds Complete r e q u e s t s : 20 Total transferred : 461520 b y t e s HTML t r a n s f e r r e d : 456240 b y t e s Requests per second : 78.86 [ # / sec ] ( mean ) Time per r e q u e s t : 126.807 [ ms ] ( mean ) Time per r e q u e s t : 12.681 [ ms ] ( mean , across a l l c o n c u r r e n t r e q u e s t s ) Transfer rate : 1777.12 [ Kbytes / sec ] r e c e i v e d Connection Times (ms) min mean[+/−sd ] median max Connect : 0 0 0.3 0 1 Processing : 55 108 49.4 103 253 Waiting : 54 108 49.4 103 253 Total : 55 109 49.4 105 253 Percentage o f t h e r e q u e s t s served w i t h i n a c e r t a i n t i m e (ms) 50% 105 66% 123 75% 128 80% 131 90% 203 95% 253 98% 253 99% 253 100% 253 ( l o n g e s t r e q u e s t ) Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 27 / 44
  • 28. PHP accelerators PHP accelerator is a PHP extension, improves the performance. Usually works by caching the compiled bytecode of PHP scripts. no parsing and compiling of PHP scripts on each request cached bytecode is stored in shared memory, no reads from a disk Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 28 / 44
  • 29. PHP accelerators - list APC1 - Alternative PHP Cache, support for PHP 5.3, built-in for PHP 6 eAccelerator2 - support for PHP 5.3 XCache3 - support for PHP 5.3 ... 1 http://php.net/manual/book.apc.php 2 http://eaccelerator.net 3 http://xcache.lighttpd.net Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 29 / 44
  • 30. APC - Runtime configuration Serious users should consider tuning of APC parameters, primarily: apc.shm_size - memory allocated to APC apc.stat - check if a file has been modified Further tuning: apc.filters - to be cached or not to be cached (multiple regexp for filenames) Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 30 / 44
  • 31. APC - Configuration for symfony APC runtime configuration suitable for symfony projects: # Use 96MB f o r APC apc . shm_size=96 # D i s a b l e f i l e m o d i f i c a t i o n check apc . s t a t =0 # A l l f i l e n a m e s are cached by d e f a u l t apc . c a c h e _ b y _ d e f a u l t =1 # L i s t o f a comma −separated POSIX extended r e g u l a r e x p r e s s i o n s . # I f any p a t t e r n matches t h e f i l e n a m e , t h e f i l e w i l l n o t be cached . apc . f i l t e r s = "−dev,−s t a g i n g ,− t e s t , − . yml$ " Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 31 / 44
  • 32. APC - apc.php interface - cache information Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 32 / 44
  • 33. APC - apc.php interface - wrong configuration Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 33 / 44
  • 34. APC - apc.php interface - list of cached entries Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 34 / 44
  • 35. APC - User Cache APC User cache is a key-value data store which persists between requests. It’s good for caching when used wisely. <?php function slow_function ( ) { s l e e p ( 1 ) ; / / r e a l l y hard j o b here r e t u r n a r r a y ( ’ what ’ => ’ webexpo ’ , ’ where ’ => ’ Prague ’ ) ; } $apc_key = ’ my_data ’ ; $data = a p c _ f e t c h ( $apc_key , $success ) ; i f ( ! $success ) { $data = s l o w _ f u n c t i o n ( ) ; a p c _ s t o r e ( $apc_key , $data ) ; } echo ’ Welcome a t ’ . $data [ ’ what ’ ] . ’ i n ’ . $data [ ’ where ’ ] ; Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 35 / 44
  • 36. APC with Apache web server APC tuning with Apache web server Some APC configuration options can be different for each VirtualHost < V i r t u a l H o s t ∗:80 > ServerName www. webexpo . cz # we can d i s a b l e APC f o r t h i s domain by u s i n g v a l u e " 0 " php_admin_value apc . enabled 1 # t o enable f i l e m o d i f i c a t i o n check , use " 1 " php_admin_value apc . s t a t 1 ..... </ V i r t u a l H o s t > Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 36 / 44
  • 37. APC is awesome! PHP 5.3.2 1 case apc.enabled = 0 apc.enabled = 1 request time apc.stat = 1 apc.stat = 0 with APC 1 256 ms 85 ms 81 ms 32 % 2 288 ms 104 ms 100 ms 35 % PHP 5.2.6 2 case apc.enabled = 0 apc.enabled = 1 request time apc.stat = 1 apc.stat = 0 with APC 1 277 ms 81 ms 79 ms 29 % 2 297 ms 95 ms 93 ms 31 % 1 OS Debian, PHP 5.3.2-2, APC 3.1.3p1 2 OS Debian, PHP 5.2.6-1, APC 3.0.19 Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 37 / 44
  • 38. Symfony - environments dev staging prod cache - + + log + + - debug + + - stats - - + Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 38 / 44
  • 39. Symfony - live demo Live Demo Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 39 / 44
  • 40. Caching in symfony - page Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 40 / 44
  • 41. Caching in symfony - action Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 41 / 44
  • 42. Caching in symfony - partial Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 42 / 44
  • 43. Caching in symfony Live Demo Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 43 / 44
  • 44. Thank you! Jaroslav Bauml / bauml@bartonstudio.cz Pavel Campr / campr@bartonstudio.cz / @PavelCampr www.bartonstudio.cz Jaroslav Bauml, Pavel Campr Symfony - modern technology in practice 24 Sep 2010 44 / 44