Explaining why you should and how you can test your web application using JMeter test plans to determine the scalability. By knowing how good or bad your application performs you can then make the decision to optimize it.
But where to start optimizing? => You need to profile your application in order to see the components which have the most impact in your application regarding number of method calls, memory consumption and CPU time used.
XHProf is a good hierarchical profiler which you can use to generate the callstack and a callgraph of your application (directed acyclic weighted graph) to see where you could start optimizing your application.
This talk was presented on the TYPO3 DevDays 2015 in Nuremberg.
5. Why?
- Properly scale your system
- Analyze QoS performance
- Identify bottlenecks
- Check reliability
- Verify SLA
6. How?
- Have a lot of friends
- Have a lot of employees
- Pay people
- Use proper software solution
7. Apache JMeter
- Open source java tool (therefore platform
idependent)
- Can analyze any kind of web application (or native
software)
- Easy configurable tests and graphs
- Supports external data sources for serving test data
- Scales
9. JMeter master-slave
- Uses RMI
- Use the same network subnet or a
proxy
- Use SSH portforwarding
- If you configure live results, network
bandwidth will be heavy
10. Blazemeter
- SaaS solution to run JMeter tests at scale
- Can use AWS, Google Cloud, your own
machines (reduces configuration
overhead for RMI)
- Integrates with CI tools => measure
performance increase/decrease before a
release
11. Blazemeter
- SaaS solution to run JMeter tests at scale
- Can use AWS, Google Cloud, your own
machines (reduces configuration
overhead for RMI)
- Integrates with CI tools => measure
performance increase/decrease before a
release
13. Now we know how our system
performs.
But where to start optimizing?
14. Profiling
Measure the memory usage,
complexity of a program, the
usage of particular instructions
and the frequency and duration of
function calls.
26. Optimizing your database
- Inform yourself (book, webinar, etc.)
- Use the percona toolkit
- Mount your database in memory (just kidding)
- If on a different host, check latency
- Persistent connection?