Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Discovering & Solving Performance Issues

Denis Brumann
November 16, 2017

Discovering & Solving Performance Issues

In this talk I show how to approach performance analysis during development, scaling your website and profiling in production. The second part of the talk discusses some general approaches for improving performance from upgrading to PHP 7 over optimizing performance in Doctrine entities/repositories to application- and HTTP-caching.

Denis Brumann

November 16, 2017

More Decks by Denis Brumann

Other Decks in Programming


  1. Quick overview, rather than detailed look What works for me,

    might not work for you Introduction to some tools Opinionated guide of practices WHAT TO EXPECT?
  2. It can be used to simulate a heavy load on

    a server, group of servers, network or object to test its strength or to analyze overall performance under different load types. https://jmeter.apache.org/
 Determine how many users and/or transactions a given

 will support and still meet performance goals. LOAD TEST
 Verify application behavior under normal and peak load conditions. STRESS TEST
 Determine or validate an application’s behavior when pushed
 beyond normal or peak load conditions.
  4. http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/improving-performance.html METADATA & QUERY CACHES it is strongly discouraged to

    use Doctrine without a Metadata and Query cache (preferably with APC or Memcache as the cache driver). ALTERNATIVE RESULT FORMATS Make effective use of the available alternative query result formats like nested array graphs or pure scalar results, especially in scenarios where data is loaded for read-only purposes.
  5. DISCOVERING PERFORMANCE PROBLEMS Overall performance & scalability? Unspecified performance issue

    on a specific page? Worker jobs & CLI tasks? Load & capacity tests using JMeter During development: Web Profiler In depth analysis: Blackfire Blackfire
  6. GENERAL TIPS Measure first, then change Make changes in small

    increments Search for causes, not symptoms Verify assumptions & results with real data Revisit old assumptions