Caching for Cash: Benchmarking and Profiling

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Caching for Cash: Benchmarking and Profiling - Presentation Transcript

    1. CACHING FOR CASH - BENCHMARKING Scott MacVicar + Helgi Þormar Þorbjörnsson php|works 2008
    2. GOALS Learn how to find slow pages Locate slow blocks of code Apply minor optimisations
    3. THOUGHT STEPS Things seem a bit slow Take a guess whats slow Browse lots of code
    4. SYSTEM COMPONENTS Appliation Server Database Server Application Database Network
    5. PAGE BENCHMARKING Single Request doesn’t matter Average time for maximum amount of users Hopefully at worst it scales linearly
    6. REQUIREMENTS Same hardware configuration Same server configuration Same network interface speed (100mbps) Basically your “staging server”
    7. STEPS TO BENCHMARK Record server load Run our tests at least 3 times Take average of tests
    8. BENCHMARKING TOOLS Apache Bench Apache Flood Siege
    9. APACHE BENCH Shows requests per second Bundled with Apache Gives relative idea of load
    10. APACHE BENCH - DEMO 1000 Requests with 5 at a time ab -n 1000 -c 5 http://localhost/phpBB3/index.php 1000 requests with 5 at a time using keep alive ab -n 1000 -c 5 -k http://localhost/phpBB3/index.php Output results to Excel / GNUPlot ab -n 1000 -c 5 -g http://localhost/phpBB3/index.php
    11. ISSUES WITH APACHE BENCH Synthetic Benchmark No way to emulate users
    12. APACHE FLOOD Profile driven benchmarking XML Based config Use variables on pages
    13. XML FORMAT URLLIST FARM FARMER PROFILE
    14. URLIST Simple group of URLs Supports postdelay and predelay
    15. FARMER Single User Can use URLLIST in various ways Random Order Round Robin Keep-Alive
    16. FARM It’s where the farmers work Controls the way the farmers work Creates farmers too
    17. PROFILE Runtime configuration Can change various settings socket report
    18. USE CASES User visits main page User visits main page then download page User visits main page then download and downloads a file
    19. SINGLE PAGE Keep Alive Page Image Image
    20. SINGLE PAGE XML
    21. TWO PAGE VISITS Keep Alive Page Image Image 30 secs later Keep Alive Page Image Image
    22. TWO PAGE VISITS XML
    23. TWO PAGE VISITS AND DOWNOAD Keep Alive Page Image Image 30 secs later Keep Alive Page Image Image 15 secs later ISO
    24. TWO PAGE VISIT AND DOWNOAD XML
    25. SETUP A PROFILE enable keepalive use the relative times output format check for 200 OK
    26. PROFILE XML
    27. JOE THE FARMER
    28. FARM FOR JOE TO WORK ON
    29. RUNNING FLOOD flood <configuration.xml> > output.file anaylze-relative output.file
    30. VMWARE INSTALL Run Run VMware- VMware- Run VMWare-fusion.dmg player-2.5.0-118166.exe Player-2.5.0-118166.i386 .bundle Reboot Copy Fedora 10 Folder to Disk Load via VMWare php / password
    31. TASK • Visit http://localhost/phpBB3/ • View a forum after 20 seconds • View a thread after 5 seconds • Click reply after 60 seconds • Sample file in flood-examples folder
    32. SIEGE Provides functionality of Apache Bench and Flood Supports GET and POST with a simple syntax Benchmark and Internet mode
    33. SIEGE COMMANDS 1000 Requests with 5 at a time siege -b -r 1000 -c 5 http://localhost/phpBB3/index.php 10 seconds with concurrency of 5 siege -b -c 5 -t 10 http://localhost/phpBB3/index.php Read urls.txt for a list of URLs siege -b -n 1000 -c 5
    34. SPROXY Creates local socks proxy on your machine Set your browser to use the local proxy, port 9001 Browse your site with the actions you wish urls.txt is written with the POST and GET data
    35. OTHER BENCHMARKING TOOLS JMeter httperf Web Application Stress Tool OpenWebLoad
    36. PROFILING
    37. WHAT IS PROFILING Examines the performance characteristics Records every function call Tracks execution time Tracks memory usage
    38. PROFILING TOOLS XDebug apd
    39. XDEBUG Debugger Code Coverage Memory and Executon time
    40. XDEBUG PROTECTIONS Stack overflow in PHP Infinite Recursion
    41. ERROR MESSAGE HELPING
    42. XDEBUG HELPFUL ERROR MESSAGES
    43. MORE ERROR MESSAGE HELPING
    44. EXECUTION TIME
    45. MEMORY USAGE
    46. EXECUTION TRACE xdebug.auto_trace=1 xdebug.trace_output_dir=/tmp xdebug.collect_params=1 xdebug.collect_return=1 xdebug.trace_output_name=trace.%c
    47. EXECUTION TRACE
    48. PARTIAL EXECUTION TRACE Tracing only parts of an application with xdebug_start_trace() and xdebug_stop_trace(). Fetching the trace file name that is being used with xdebug_get_tracefile_name(). Changing how much data is shown with xdebug.var_display_max_children, xdebug.var_display_max_data and xdebug.var_display_max_depth.
    49. CODE COVERAGE Finds unexecuted code xdebug_start_code_coverage() xdebug_get_code_coverage() xdebug_stop_code_coverage()
    50. CODE COVERAGE SAMPLE
    51. CODE COVERAGE OUTPUT
    52. PROFILING Execute action as normal in browser Outputs cachegrind file INI settings: xdebug.profiler_enable=1 ; enable profiler xdebug.profile_output_dir=/tmp ; output directory xdebug.profile_output_name=cachegrind.out.%p
    53. PROFILING CONTINUED Locate parts of the code that is slow Work down tree to find the slow sections Can it be cached? Can it be optimized? Occasionally built?
    54. VIEWING PROFILE KCacheGrind MacCallGrind WinCacheGrind Carica CacheGrind
    55. PROFILING DEMO
    56. TASK sudo nano -w /etc/php.d/xdebug.ini remove ; from xdebug.profiler_enabled=1 Profile a page on Wordpress Profile a page on phpBB Try to find something slow you think could be improved 20 minutes
    57. APD Lives in PECL Similar to XDebug Doesn’t require KCachegrind Still only PHP 4
    58. APD apd_set_pprof_trace() to enable profiler pprof is a script to interpret the trace Outputs to apd.dumpdir
    59. BRINGING IT TOGETHER Use profiler with benchmarks Profiling can be run on production sites Optimise slow code
    60. RESOURCES Lunch - back at 1pm for Caching http://talks.macvicar.net/ http://httpd.apache.org/test/flood/ http://xdebug.org/docs/ http://www.joedog.org

    + Scott MacVicarScott MacVicar, 6 months ago

    custom

    732 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 732
      • 732 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 18
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Tags