Managing Java Applications
@AloisReitbauer
3
DevOps
to the rescue?
Don’t just build
software that runs
Build software that
somebody else can
        run
What is performance
  and how do we
   measure it?
How we define Performance
• Response Time
   The time it takes for an application to respond to a user request.
• Throughput
   The amount of concurrently processed request in a given time period.
   e.g.: requests/minute.
• Availability
   Status of our systems. Are they up and running for us and our users?
• Accuracy
   Is the response what the user actually expected? Are there any errors
Performance Pyramid


                       Business


                      Application


                      Container


                 System Performance
Types of Measurement
 • Cyclic Measurements
    – Are collected ar regular time intervals
    – Are time based
    – JMX, CPU, Memory


 • Event-based measurements
    – Are collected as a request occurs
    – Are transactional
    – Response Times, CPU consumption
Blind Men and
Elephants again
How can this happen?



A: Our response time is 2.3 seconds
B: Our response time is 1.5 seconds
C: Our response time is 6 seconds
Measurement Aggregation
• Minimum and Maximum
  The best and the worst request. Beware of outliers.
• Average
  Sum/Count. Uses in many cases. Quality depends on actual values.
• Median
  What 50 percent of our users see.
• Percentile
  What n percent of our users see.
Use percentiles for
   event-based
    measures
Use averages for
cyclical measures
Agree on Measurement Approach


        Page Load Time     HTTP Request Time   95 % Servlet Time




                           Network
  Browser       Firewall    Sniffer     Web Server        Application
                                                            Server
                               Request Time (max)
System and Container Metrics
Time-Based vs. Event-Based Measurement
Transactional Measurement
Transaction Flow Visualization
Focus on a specific transaction
Visual Problem Identification
How do we manage
 performance and
 solve problems?
Types of Problems
 • Data-Driven Problems
   Problems which occur for specific users, scenarios and which
   depend on (input) parameters e.g.: a search query

 • Load Driven Problems
   Problems which depend on the current system load. Usually
   occur at higher load. In most cases resource dependent. e.g.:
   increased response time with more users.

 • Environment Driven Problems
    Problems caused by factors outside the application. e.g.:
    hardware, network connectivity, etc.
Operations Main Tasks
• Monitoring
   Collect all relevant KPIs and check against SLAs and
   baselines?
• Alerting/Incident Management
   Inform ops about problems
• Impact Analysis
   Analyze the impact of issues. Who is affected?
• Isolation
   What is the cause of a problem and who must I talk to?
• Diagnosis
   Why is there a problem and how can we fix it?
Key Performance Indicators/Metrics
• Visitors and Requests
  How many people are using our site?
• Response Times
  How fast do we service requests.?
• Errors and Failed Transactions
  How many problems do we see and how often do they affect
  functionality?
• Availability
  Can our systems currently be reached?
• Utilization Metrics
  Do we have enough resources and are we using them
  efficiently?
… and in the real
    world?
Large-scale shopping platform
Performance Pyramid


                      Business


                   Application


                    Container


                System Performance
System/Container Performance
Technical Response Time View
Page Category Performance
Performance of Key Transactions
Business View wit Performance Data
You can do even
more (aka. Goodies)
Page Error Tracking
Third Party Management
Amazon EC2 Cost Monitoring
Alois Reitbauer
          @AloisReitbauer

http://book.dynatrace.com
 http://blog.dynatrace.com
41
     © 2011 Compuware Corporation — All Rights Reserved

Monitoring and Managing Java Applications

Editor's Notes

  • #24 Cars.com … prep for superbowl