SlideShare une entreprise Scribd logo
1  sur  75
Lucas Jellema (AMIS, The Netherlands)
THINKING THROUGH
JAVA ENTERPRISE PERFORMANCE




JavaOne 2012, San Francisco
OVERVIEW

• What is performance?
• Where is performance established?
• Advanced tuning methods
• ISYITF Method for Performance Improvement:
   – Do not do it …
• Architecting Enterprise Java applications for improved
  performance
PERFORMANCE DEGRADATION




         65 %
PERFORMANCE DEGRADATION




          Response
            time

          + 65 %
PERFORMANCE



                 Who determines in what way the performance
Expectations
                                                 Measure objectively
                   Business Owner

               Process Duration                 Business Objectives
                           Wait time
                                                                  SLAs


                                          Availability ≈ Performance



 Disappearance Hourglass
                                                  Response time
                          Meaningful response
THE THEATER MANAGER
TYPICAL LAYOUT OF
ENTERPRISE JAVA APPLICATIONS
                           Performance ≈ Wait for Response



      Web Browser




  JEE Application Server




         RDBMS
PERFORMANCE CONTRIBUTORS IN
ENTERPRISE JAVA APPLICATIONS
                           Performance ≈ Wait for Response


                                       Response = Wait + Processing
      Web Browser                      Wait = Network 1 + Response
                                                AppServer
             1


  JEE Application Server              Response = Wait + Processing
                                      Wait = Network 2 + Response
                                               Database
             2


                                      Response = Processing
         RDBMS                 Processing = internal wait (I/O) + CPU
ADVANCED TUNING METHODS

• Use StringBuffer rather than plain String concatenation
• Use SAX for XML parsing instead of DOM
• Carefully select the collection class to use
   – optimize hashcode() in custom Map implementations
• Use profiling tools to identify hotspots in the Java code
• Remove Assertions from production code
• Find optimal JVM switches through trial-and-error
   – Focus on GC, Heap size, thread pools
• Pool resources and reuse objects rather than recreate
• Leverage concurrency features in Java to
   – speed up time-to-completion through parallel execution
   – prevent underuse of CPU during I/O operations
• Optimize algorithms for sorting, pattern matching, iteration,
  serialization, …
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT




The fastest way to perform a task:

DO NOT DO IT
PREVENT UNNEEDED PROCESSING


 if ( expensiveEvaluation & someFlag) {
     ...
 }




 if ( someFlag && expensiveEvaluation) {
     ...
 }
PREVENT UNNEEDED PROCESSING


 log.debug ( “Outcome step 2: ” +
              resultOfExpensiveProcessing );




 if (log.doDebug)
   log.debug ( “Outcome step 2: ” +
              resultOfExpensiveProcessing );
THE SHOPPING ALGORITHM
THE SHOPPING ALGORITHM

•   shopForItem Item ( String itemName) {
        driveToShop;
        Item item = buyItemAtShop ( itemName);
        driveHomeFromShop;
        return item;
    }
GET THIS WEEK’S GROCERIES

getGroceries Item[] ( String[] shoppingList) {
    Item[] items = new Item[ shoppingList.length];
    for (int i=0; i < shoppingList.length; i++) {
        items[i] = shopForItem (shoppingList[i]);
    }
    return items;
}
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT



                          AT ALL
       MORE OFTEN THAN REQUIRED
DO NOT DO IT
SWEET MEMORIES
STOCK MANAGEMENT
STOCK MANAGEMENT
DO NOT DO IT…
MORE OFTEN THAN REQUIRED
• If it has been produced before…
    – Reuse before re-produce!
• If it has been shipped before…
    – Reuse instead of re-ship          Web Browser
• … provided it is still fresh




                                    JEE Application Server




                                           RDBMS
DO NOT DO IT…
MORE OFTEN THAN REQUIRED
• Save on network trips, context
  switches and tiers to cross
• Save on ‘reproducing’ same results
                   -JS data (memory)
                         -Cookies                       Web Browser
                       - HTML 5 db




                          Edge Cache
               Cache                              JEE Application Server
            Cluster Fail-Over
            (Session State)
            Result Store
            Write Behind
                                        Client Result
                                            Cache


                                       Result Cache
                                                          RDBMS
                                       Materialized
                                          View
MORE PERFORMANCE REQUIRES
PARALLEL
MORE PERFORMANCE REQUIRES
PARALLEL
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                          AT ALL
       MORE OFTEN THAN REQUIRED
                   ON YOUR OWN
MOORE’S LAW REVISED: CORES LAW
DO NOT DO IT…
ON YOUR OWN
• Parallel means: multiple resources contributing to a
  task at the same time

• Leverage multi-core CPU
• Achieve scalability and performance with a Cluster
• Introduce parallellism into your application
   – Java: Concurrency (ThreadPools), WorkManager
   – Database: parallel query and DML ,
      dbms_parallel_execute, dbms_job, parallel table
      functions
   – Multi threading: on every tier and even across tiers
• Engage compute grid: multi node processing unit
   – For example: make Hadoop make those nodes work
      for you (divvy up the work and merge the results)
BALANCE RESOURCES TO PREVENT
CLOGGING
HILTON UNION SQUARE – LAST FRIDAY
THE POORLY PERFORMING
               BUSINESS PROCESS LOAN REQUEST

                                                                         Reject
                                                                        request
          Check Identity
 Loan                                        Evaluate
request
           with Federal    Fraud Analysis
                                             Request
             Service
                                                                        Transfer
                                                                         Money

           Max 1 day        Max 2 days      Max 3 days                Max 3 mins
           98% is OK        99.99% is OK




                                                        Max 6 days + 3 mins
THAT DINNER IS TAKING MIGHTY
            LONG…


Dinner is
 Served




                                         All are
                                        satisfied




                                  Max 3 hours + 3 mins
THE DINNER PROCESS




Dinner is   John eats   Mary eats       Daisy           Marty
 Served       soup       soup         eats soup        eats soup


                                         Daisy          Marty
            John eats   Mary eats
                                         eats           eats
              main       main
                                         main           main

                         Daisy
            John eats                All are
                          eats      satisfied
              desert
                         desert


                                                  Max 3 hours + 3 mins
THE SAME DINNER PROCESS
            John eats    John eats
              soup         main
                                     John eats
            Mary eats    Mary eats     desert
Dinner is
             soup         main                             All are
 Served                                                   satisfied
                          Daisy       Daisy
            Daisy eats
                          eats         eats
              soup
                          main        desert

                          Marty
             Marty
                          eats
            eats soup
                          main




                                                 Max 3 hours + 3 mins
THE OPTIMIZED DINNER PROCESS
            John eats    John eats
              soup         main
                                     John eats
            Mary eats    Mary eats     desert
             soup         main
Dinner is                                                  All are
 Served                                                   satisfied
                          Daisy       Daisy
            Daisy eats
                          eats         eats
              soup
                          main        desert

                          Marty
             Marty
                          eats
            eats soup
                          main




                                                 Max 1 hours + 3 mins
FURTHER OPTIMIZATIONS
                                     (IF NOT REFINEMENT)
            John eats    John eats
              soup         main
                                       John eats
            Mary eats    Mary eats       desert
             soup         main
Dinner is                                               All are
 Served                                                satisfied
                          Daisy         Daisy
            Daisy eats
                          eats           eats
              soup
                          main          desert

                          Marty
             Marty
                          eats
            eats soup
                          main




                                                   Max 53 mins
THE POORLY PERFORMING
               BUSINESS PROCESS LOAN REQUEST

                                                                         Reject
                                                                        request
          Check Identity
 Loan                                        Evaluate
request
           with Federal    Fraud Analysis
                                             Request
             Service
                                                                        Transfer
                                                                         Money

           Max 1 day        Max 2 days      Max 3 days                Max 3 mins
           98% is OK        99.99% is OK




                                                        Max 6 days + 3 mins
SPEEDING UP THE BUSINESS
          PROCESS LOAN REQUEST
                Check Identity
                 with Federal
                   Service              Reject
                                       request

 Loan
request
                Fraud Analysis

                                       Transfer
                  Evaluate             Money
                  Request

                 Max 1 day            Max 3 mins
                 Max 2 days
                 Max 3 days
                                 Max 3 days + 3 mins
PANCAKE PARTY
BETTER PERFORMING PANCAKE
PARTY
PIPELINED PANCAKE PARTY: BEST
PERFORMANCE
PIPELINING ACROSS THE TIERS

• Database:
   – Pipelined Table Functions
   – Pipes and Queues
• Middle tier:                   Web Browser
   – Multiple threads
   – Queues (JMS)
• Client tier:
   – AJAX “channels”
   – WebSockets




                                   RDBMS
THE PINNACLE OF UN-PERFORMANCE
FIRE AND FORGET
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                          AT ALL
       MORE OFTEN THAN REQUIRED
                   ON YOUR OWN
                    IMMEDIATELY
FIRE AND FORGET IN THE REAL WORLD
DO NOT DO IT…
IMMEDIATELY (OR SYNCHRONOUSLY)
• Submit information, file a complaint or request, start a
  process, trigger interaction
   – No immediate response is required!
• Asynchronous
   – Start batch job (db) or worker-thread (java)
       • Or fire event
   – Write behind (from grid) (NO SQL)
   – DML Error log
DO NOT DO IT…
IN BATCH (UN-IMMEDIATELY)
• Batch jobs can put peak load on a system – choking
  on line applications
   – Monthly reporting, quarterly prolongation, yearly
      calculation,
• Batch jobs are increasingly unwanted in 24/7
   – When is the “nightly” batch window?
   – Data not current (enough) by today’s standards: “batch
      has not run yet”
• Batch jobs used to be desirable or needed as a result
  of technical limitations – that may not apply anymore
• Continuous, near real-time operations – leveraging
  events, decoupling and integration architectures – are
  a serious alternative
DON’T CALL US … WE’LL CALL YOU
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                          AT ALL
       MORE OFTEN THAN REQUIRED
                    ON YOUR OWN
                     IMMEDIATELY
                 AS PER REQUEST
DO NOT DO IT…
AS PER REQUEST
• Push has two key advantages over poll
   – Most up to date information
   – Reduction in network traffic and load on server
• Push is available in several flavors
   – Middleware to Browser: comet, ADF Active Data
      Service, WebLogic Server HTTP Channels, long poll,
      WebSockets in HTML 5
   – Database to Middleware: JMS/AQ, Database Query
      Result Change Notification, Table Triggers, utl_http
      push to servlet
   – “piggy backing” – adding subscribed-to information in
      regular requests
• Event driven architecture is
  based on push (of events) to
  mediating event handling
  infrastructure
BITE OFF MORE THAN YOU CAN HAVE TO
CHEW
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                            AT ALL
        MORE OFTEN THAN REQUIRED
                      ON YOUR OWN
                       IMMEDIATELY
                   AS PER REQUEST
    IN TOO BIG OR TOO SMALL STEPS
DO NOT DO IT…
IN TOO BIG STEPS
• Performance perception is often: time until page is
  displayed and accessible (hourglass disappears)
• Web pages frequently contain much more than is
  initially visible or even required
   – Tree nodes, inactive tabs, invisible popups, unopened
      dropdown lists
• Performance perception can be enhanced by not
  initially loading what is not required
• Use AJAX based post-loading to (lazy-)fetch content in
  subsequent, background round-trips




• /*+ First Rows */ vs. /*+ All Rows */
PENSION FUND – SEPTEMBER 2012


      Employer             <    >




      Participants




      Job & Benefits
FETCHING THE DATA OF THE PENSION
FUND FOR THE WEB APPLICATION

              select *
                                    1 record
      <   >
              from   employers
              where id = < 324>


              select *               100s records
              from   participants
              where employer_id = < 324>




              select *                10s records
              from   benefits
              where participant_id = <#>
REPORTING ON MANY EMPLOYERS


           select *
                                    100s records
           from   employers           1 query



           select *                10k records
           from   participants     100s queries
           where employer_id = <#>




           select *               100k records
           from   benefits         10k queries
           where participant_id = <#>
SINGLE BULK RETRIEVE REPLACING
MULTIPLE QUERIES
• Have the database bulk up the data retrieval
• Return Ref Cursor, Types and Collections or
  JSON/XML



                 Benefits Package


select *
from   employers
where id in <some set> select *
                       from   participants
                       where employer_id in <some set>
 select b.*
 from   benefits b join participants p
        on (p.id = b.participant_id)
 where p.employer_id in <some set>
DO NOT DO IT…
IN TOO BIG OR TOO SMALL STEPS
• Every network round-trip and context-switch adds
  overhead
   – Compare dialing the operator for every digit in the
     telephone number you want to learn about
• Bundling up information to reduce the number of
  round trips can be advantageous for performance
   – Bring all items from the shop in one round trip
   – Leverage collections and types, XML or JSON to
     retrieve complex, structured object graphs from DB
   – Zipping up multiple web resources in single archive
   – Mashing up icons or images into a single big picture
   – Piggy-back information onto requests
THE HARD WAY
A CONVOLUTED WAY
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                             AT ALL
        MORE OFTEN THAN REQUIRED
                       ON YOUR OWN
                        IMMEDIATELY
                    AS PER REQUEST
    IN TOO BIG OR TOO SMALL STEPS
              IN A CONVOLUTED WAY
DO NOT DO IT…
IN A CONVOLUTED WAY
• Pragmatism can overcome theoretical purity (or old
  dogs’ tricks)
   – With good reason and well documented

• Have client side Java Script directly access Google
  Maps – by-passing the application server
• Have client directly access Database services
• Use RESTful (JSON, CSV) rather than WS* and XML
  between browser client and application server
• Use POJOs (Entities) throughout the application, from
  JPA to Web Tier – rather than copying/transferring
• When that suffices, use simple substring i/o parsing
  big xml in DOM
• Pass plain CSV/JSON/XML from DB through Java
  middle tier to Client when that is appropriate
BOTTLENECK / CRITICAL CHAIN
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                             AT ALL
        MORE OFTEN THAN REQUIRED
                       ON YOUR OWN
                        IMMEDIATELY
                    AS PER REQUEST
    IN TOO BIG OR TOO SMALL STEPS
              IN A CONVOLUTED WAY
            IN A SUBOPTIMAL PLACE
BOTTLENECK / CRITICAL CHAIN

• Make sure that the bottleneck resource in your
  enterprise application is not used (at peak times) for
  work that is not critical or that can be outsourced
   – Use auxiliary resources – outside critical chain
   – Engage specialized servers, optimized for specific
     tasks
   – Manage resources in a strict manner
       • Resource manager (DB) or Work manager (WLS)
DO NOT DO IT… LIVE EVENT PROCESSING
IN A SUBOPTIMAL PLACE
• The league of real time events
   – Continuous stream of a multitude of tiny events with
     hardly any payload, to analyze & aggregate
   – Sent from physical sensors
     (temperature, pressure, RFID, security gates), process
     sensors, Twitter, manufacturing equipment, database
     triggers, web servers, ESBs, stock trade tickers, sport
     statistics, RSS, network switches, …
DO NOT DO IT… HTML RENDERING
IN A SUBOPTIMAL PLACE
• (X)HTML is not very compact
   – Information density of HTML is very low
• DHTML, JavaScript &
  AJAX allow for                      Web Browser
   – Dynamic HTML
     rendering in browser
   – Dynamic, Partial
     Page Refresh
• Most HTML presented             JEE Application Server
  by application is pre-
  defined
   – Dynamic data content
     fetched from RDBMS
     or other services is
     small fraction                      RDBMS
DO NOT DO IT…
IN A SUBOPTIMAL PLACE
• Do not perform a task in a resource that is not ideally
  suited for that task
   – If it directly contributes to overall performance
DO NOT DO IT…
IN A SUBOPTIMAL PLACE
•   Leverage database for what it’s good at
     – Data Integrity – Primary Key /Unique Key /Foreign Key
     – Aggregation
     – Sorting
     – Data Rule enforcement
     – Bulk DML and Copy data
     – Analytical Functions, Model clause, Rollup
•   Specialized engines for
     – Imaging and Document Processing
     – Match and Search
     – Speech Recognition
     – Cryptography
     – 3D
     – Real time Data Processing
     – ….
ISYITF METHOD
FOR PERFORMANCE IMPROVEMENT

DO NOT DO IT …
                             AT ALL
        MORE OFTEN THAN REQUIRED
                       ON YOUR OWN
                        IMMEDIATELY
                    AS PER REQUEST
    IN TOO BIG OR TOO SMALL STEPS
              IN A CONVOLUTED WAY
            IN A SUBOPTIMAL PLACE
ARCHITECT FOR PERFORMANCE




             Web Browser




         JEE Application Server




                RDBMS
ARCHITECT(URE) FOR PERFORMANCE
                                                                Services ( Google Maps,
                                                                Translation, Conversion,
                                                                       Data Feeds

-JS data (memory)                       Web Browser
     -Cookies        HTML rendering
 - HTML 5 local db   Validation, Calculation, Parsing
                     “Processing” (image, cryption, compression, SETI)




                         Fire&Forget
                                        piggy-                    Post load
                                         back                     (AJAX)
                                                                              by-pass

                                       JEE Application Server
ARCHITECT(URE) FOR PERFORMANCE
                                                                                 Services ( Google Maps,
                                                                                 Translation, Conversion,
                                                                                        Data Feeds

-JS data (memory)                                      Web Browser
     -Cookies                     HTML rendering
 - HTML 5 local db                Validation, Calculation, Parsing
                                  “Processing” (image, cryption, compression, SETI)




                                      Fire&Forget
                           push                        piggy-                        Post load
                                                        back                         (AJAX) by-pass

                                                                                                              Search
        Edge Cache                                        Load balancer                                         &
                                                                                                              Match
                                                    Sticky ip sessions, Throttling                   CEP
           Cache
                                                                                                              CMS
       Cluster Fail-Over              JEE                   JEE                                     Compute
                                                                         WorkManager
       (Session State)                App                   App          Parallel Threads            Grid
       Result Store                  Server                Server        JMS                                Crypto
       Write Behind
                                     Node                  Node              Node                   Image
                                                                                                             Print
                                                                                                            Server
ARCHITECT(URE) FOR PERFORMANCE
                               by-pass
                                                                                                           Search
Edge Cache                                 Load balancer                                                     &
                                                                                                           Match
                                   Sticky ip sessions, Throttling                                 CEP
    Cache
                                                                                                           CMS
Cluster Fail-Over              JEE           JEE                                                 Compute
                                                           WorkManager
(Session State)                App           App           Parallel Threads                       Grid
Result Store                  Server        Server         JMS                                           Crypto
Write Behind
                              Node          Node                         Node                    Image
                    push                                                                                  Print
                                                                                                         Server




                                                           Fire&Forget
                           Client Result                                        Post
                               Cache                                            load

                             AQ/JMS
                             HTTP Push
                             DB QRCN
         Result Cache
                                              Aggregation
                                                                                            Resource Mgt
         Materialized                         Filter & Sort
                                                                                                       Jobs
                                              Data Integrity
            View                              Bulk DML                                           Pipelining
                                                                                       Parallel Processing
                               CBO            RDBMS
Services ( Google Maps,
                                                                                              Translation, Conversion,
                                                                                                    Data Feeds

      -JS data
    (memory)
                                                      Web Browser
                                    HTML rendering
     -Cookies                       Validation, Calculation, Parsing
- HTML 5 local db                   “Processing” (image, cryption, compression, SETI)


                                                                                                Post load




                                        Fire&Forget
                             push                       piggy-
                                                         back                                   (AJAX)

                                                                                                              by-pass
          Edge
          Cache                                           Load balancer
                                                      Sticky ip sessions, Throttling
                                                                                                                      CEP
         Cache                          JEE                       JEE                                                           CMS
       Cluster Fail-Over                                                                                              Compute
       (Session State)                 App                       App           WorkManager
                                                                                                                      Grid
                                                                               Parallel Threads
       Result Store                    Serv                      Serv          JMS                                               Cryp
       Write Behind                    erNo                      erNo                                                             to
                                                                                            Node
                                        de                        de                                                  Image

                             push                                                                                                Print
                                                                                                                                Server




                                                                              Fire&Forget
                                    Client Result                                                  Post
                                        Cache                                                      load


                                      AQ/JMS
                                      HTTP Push
                                      DB QRCN
                    Result
                    Cache                                          Aggregation                                Resource Mgt
                 Materialized                                      Filter & Sort                                          Jobs
                    View                                           Data Integrity                                   Pipelining
                                                                   Bulk DML                               Parallel Processing
                                           CBO
                                                             RDBMS
SUMMARY

• Performance requirements are derived from
  measurable and meaningful business objectives
• Unavailability equals Zero Performance
   – Treat Performance and Availability elements in the
     same equation
• Performance should [also] be addressed in a top-down
  approach, across all tiers and constituent parts
• Some ISYITF guidelines:
   – Do not do it … [AT ALL | MORE OFTEN THAN
     REQUIRED | ON YOUR OWN | IMMEDIATELY | AS
     PER REQUEST | IN TOO BIG OR TOO SMALL
     STEPS | IN A CONVOLUTED WAY | IN A
     SUBOPTIMAL PLACE ]

Contenu connexe

Similaire à Thinking Through Java Enterprise Performance - Lucas Jellema - Oracle OpenWorld 2012

The Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost OptimisationThe Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost OptimisationAmazon Web Services
 
Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Nathan Bijnens
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009pratiknaik
 
Ohio 2012-help-sysad-out
Ohio 2012-help-sysad-outOhio 2012-help-sysad-out
Ohio 2012-help-sysad-outmralexjuarez
 
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...Dan Usher
 
Storm distributed processing
Storm distributed processingStorm distributed processing
Storm distributed processingducquoc_vn
 
July 2012 HUG: Overview of Oozie Qualification Process
July 2012 HUG: Overview of Oozie Qualification ProcessJuly 2012 HUG: Overview of Oozie Qualification Process
July 2012 HUG: Overview of Oozie Qualification ProcessYahoo Developer Network
 
Gerard beckerleg scrum and tfs 2012
Gerard beckerleg scrum and tfs 2012Gerard beckerleg scrum and tfs 2012
Gerard beckerleg scrum and tfs 2012gerardbeckerleg
 
Novedades Denali Integration Services
Novedades Denali Integration ServicesNovedades Denali Integration Services
Novedades Denali Integration ServicesSolidQ
 
Apache Ignite - Distributed SQL Database Capabilities
Apache Ignite - Distributed SQL Database CapabilitiesApache Ignite - Distributed SQL Database Capabilities
Apache Ignite - Distributed SQL Database CapabilitiesDenis Magda
 
Business considerations for node.js applications
Business considerations for node.js applicationsBusiness considerations for node.js applications
Business considerations for node.js applicationsAspenware
 
Azug - successfully breeding rabits
Azug - successfully breeding rabitsAzug - successfully breeding rabits
Azug - successfully breeding rabitsYves Goeleven
 
Jimwebber soa
Jimwebber soaJimwebber soa
Jimwebber soad0nn9n
 
From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEjaxconf
 
Wordpress optimization
Wordpress optimizationWordpress optimization
Wordpress optimizationAlmog Baku
 
Puppet Development Workflow
Puppet Development WorkflowPuppet Development Workflow
Puppet Development WorkflowJeffery Smith
 
Lab: JVM Production Debugging 101
Lab: JVM Production Debugging 101Lab: JVM Production Debugging 101
Lab: JVM Production Debugging 101Tomer Gabel
 
Continuous delivery while minimizing performance risks (dutch web ops meetup)
Continuous delivery while minimizing performance risks (dutch web ops meetup)Continuous delivery while minimizing performance risks (dutch web ops meetup)
Continuous delivery while minimizing performance risks (dutch web ops meetup)a32an
 
Cloud Computing with .Net
Cloud Computing with .NetCloud Computing with .Net
Cloud Computing with .NetWesley Faler
 

Similaire à Thinking Through Java Enterprise Performance - Lucas Jellema - Oracle OpenWorld 2012 (20)

The Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost OptimisationThe Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost Optimisation
 
Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013
 
Lessons Learnt in 2009
Lessons Learnt in 2009Lessons Learnt in 2009
Lessons Learnt in 2009
 
Ohio 2012-help-sysad-out
Ohio 2012-help-sysad-outOhio 2012-help-sysad-out
Ohio 2012-help-sysad-out
 
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
SharePoint 2010 - Tips and Tricks of the Trade - Avoiding Administrative Blun...
 
Storm distributed processing
Storm distributed processingStorm distributed processing
Storm distributed processing
 
July 2012 HUG: Overview of Oozie Qualification Process
July 2012 HUG: Overview of Oozie Qualification ProcessJuly 2012 HUG: Overview of Oozie Qualification Process
July 2012 HUG: Overview of Oozie Qualification Process
 
Gerard beckerleg scrum and tfs 2012
Gerard beckerleg scrum and tfs 2012Gerard beckerleg scrum and tfs 2012
Gerard beckerleg scrum and tfs 2012
 
Novedades Denali Integration Services
Novedades Denali Integration ServicesNovedades Denali Integration Services
Novedades Denali Integration Services
 
Apache Ignite - Distributed SQL Database Capabilities
Apache Ignite - Distributed SQL Database CapabilitiesApache Ignite - Distributed SQL Database Capabilities
Apache Ignite - Distributed SQL Database Capabilities
 
Business considerations for node.js applications
Business considerations for node.js applicationsBusiness considerations for node.js applications
Business considerations for node.js applications
 
Azug - successfully breeding rabits
Azug - successfully breeding rabitsAzug - successfully breeding rabits
Azug - successfully breeding rabits
 
Jimwebber soa
Jimwebber soaJimwebber soa
Jimwebber soa
 
From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEE
 
JBUG.be jBPM4
JBUG.be jBPM4JBUG.be jBPM4
JBUG.be jBPM4
 
Wordpress optimization
Wordpress optimizationWordpress optimization
Wordpress optimization
 
Puppet Development Workflow
Puppet Development WorkflowPuppet Development Workflow
Puppet Development Workflow
 
Lab: JVM Production Debugging 101
Lab: JVM Production Debugging 101Lab: JVM Production Debugging 101
Lab: JVM Production Debugging 101
 
Continuous delivery while minimizing performance risks (dutch web ops meetup)
Continuous delivery while minimizing performance risks (dutch web ops meetup)Continuous delivery while minimizing performance risks (dutch web ops meetup)
Continuous delivery while minimizing performance risks (dutch web ops meetup)
 
Cloud Computing with .Net
Cloud Computing with .NetCloud Computing with .Net
Cloud Computing with .Net
 

Plus de Getting value from IoT, Integration and Data Analytics

Plus de Getting value from IoT, Integration and Data Analytics (20)

AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
AMIS Oracle OpenWorld en Code One Review 2018 - Blockchain, Integration, Serv...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: Custom Application ...
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaSAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 2: SaaS
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: DataAMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Data
 
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
AMIS Oracle OpenWorld en Code One Review 2018 - Pillar 1: Cloud Infrastructure
 
10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel10 tips voor verbetering in je Linkedin profiel
10 tips voor verbetering in je Linkedin profiel
 
Iot in de zorg the next step - fit for purpose
Iot in de zorg   the next step - fit for purpose Iot in de zorg   the next step - fit for purpose
Iot in de zorg the next step - fit for purpose
 
Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct Iot overview .. Best practices and lessons learned by Conclusion Conenct
Iot overview .. Best practices and lessons learned by Conclusion Conenct
 
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect IoT Fit for purpose - how to be successful in IOT Conclusion Connect
IoT Fit for purpose - how to be successful in IOT Conclusion Connect
 
Industry and IOT Overview of protocols and best practices Conclusion Connect
Industry and IOT Overview of protocols and best practices  Conclusion ConnectIndustry and IOT Overview of protocols and best practices  Conclusion Connect
Industry and IOT Overview of protocols and best practices Conclusion Connect
 
IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...IoT practical case using the people counter sensing traffic density build usi...
IoT practical case using the people counter sensing traffic density build usi...
 
R introduction decision_trees
R introduction decision_treesR introduction decision_trees
R introduction decision_trees
 
Introduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas JellemaIntroduction overviewmachinelearning sig Door Lucas Jellema
Introduction overviewmachinelearning sig Door Lucas Jellema
 
IoT and the Future of work
IoT and the Future of work IoT and the Future of work
IoT and the Future of work
 
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
Oracle OpenWorld 2017 Review (31st October 2017 - 250 slides)
 
Ethereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter ReitsmaEthereum smart contracts - door Peter Reitsma
Ethereum smart contracts - door Peter Reitsma
 
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - ConclusionBlockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
Blockchain - Techniek en usecases door Robert van Molken - AMIS - Conclusion
 
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion kennissessie blockchain -  Wat is Blockchain en smart contracts @Conclusion
kennissessie blockchain - Wat is Blockchain en smart contracts @Conclusion
 
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
Internet of Things propositie - Enterprise IOT - AMIS - Conclusion
 
Oow2016 review-db-dev-bigdata-BI
Oow2016 review-db-dev-bigdata-BIOow2016 review-db-dev-bigdata-BI
Oow2016 review-db-dev-bigdata-BI
 

Dernier

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 

Dernier (20)

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 

Thinking Through Java Enterprise Performance - Lucas Jellema - Oracle OpenWorld 2012

  • 1. Lucas Jellema (AMIS, The Netherlands) THINKING THROUGH JAVA ENTERPRISE PERFORMANCE JavaOne 2012, San Francisco
  • 2. OVERVIEW • What is performance? • Where is performance established? • Advanced tuning methods • ISYITF Method for Performance Improvement: – Do not do it … • Architecting Enterprise Java applications for improved performance
  • 4. PERFORMANCE DEGRADATION Response time + 65 %
  • 5. PERFORMANCE Who determines in what way the performance Expectations Measure objectively Business Owner Process Duration Business Objectives Wait time SLAs Availability ≈ Performance Disappearance Hourglass Response time Meaningful response
  • 7. TYPICAL LAYOUT OF ENTERPRISE JAVA APPLICATIONS Performance ≈ Wait for Response Web Browser JEE Application Server RDBMS
  • 8. PERFORMANCE CONTRIBUTORS IN ENTERPRISE JAVA APPLICATIONS Performance ≈ Wait for Response Response = Wait + Processing Web Browser Wait = Network 1 + Response AppServer 1 JEE Application Server Response = Wait + Processing Wait = Network 2 + Response Database 2 Response = Processing RDBMS Processing = internal wait (I/O) + CPU
  • 9. ADVANCED TUNING METHODS • Use StringBuffer rather than plain String concatenation • Use SAX for XML parsing instead of DOM • Carefully select the collection class to use – optimize hashcode() in custom Map implementations • Use profiling tools to identify hotspots in the Java code • Remove Assertions from production code • Find optimal JVM switches through trial-and-error – Focus on GC, Heap size, thread pools • Pool resources and reuse objects rather than recreate • Leverage concurrency features in Java to – speed up time-to-completion through parallel execution – prevent underuse of CPU during I/O operations • Optimize algorithms for sorting, pattern matching, iteration, serialization, …
  • 10. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT The fastest way to perform a task: DO NOT DO IT
  • 11. PREVENT UNNEEDED PROCESSING if ( expensiveEvaluation & someFlag) { ... } if ( someFlag && expensiveEvaluation) { ... }
  • 12. PREVENT UNNEEDED PROCESSING log.debug ( “Outcome step 2: ” + resultOfExpensiveProcessing ); if (log.doDebug) log.debug ( “Outcome step 2: ” + resultOfExpensiveProcessing );
  • 14. THE SHOPPING ALGORITHM • shopForItem Item ( String itemName) { driveToShop; Item item = buyItemAtShop ( itemName); driveHomeFromShop; return item; }
  • 15. GET THIS WEEK’S GROCERIES getGroceries Item[] ( String[] shoppingList) { Item[] items = new Item[ shoppingList.length]; for (int i=0; i < shoppingList.length; i++) { items[i] = shopForItem (shoppingList[i]); } return items; }
  • 16. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT AT ALL MORE OFTEN THAN REQUIRED DO NOT DO IT
  • 20. DO NOT DO IT… MORE OFTEN THAN REQUIRED • If it has been produced before… – Reuse before re-produce! • If it has been shipped before… – Reuse instead of re-ship Web Browser • … provided it is still fresh JEE Application Server RDBMS
  • 21. DO NOT DO IT… MORE OFTEN THAN REQUIRED • Save on network trips, context switches and tiers to cross • Save on ‘reproducing’ same results -JS data (memory) -Cookies Web Browser - HTML 5 db Edge Cache Cache JEE Application Server Cluster Fail-Over (Session State) Result Store Write Behind Client Result Cache Result Cache RDBMS Materialized View
  • 24. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN
  • 26. DO NOT DO IT… ON YOUR OWN • Parallel means: multiple resources contributing to a task at the same time • Leverage multi-core CPU • Achieve scalability and performance with a Cluster • Introduce parallellism into your application – Java: Concurrency (ThreadPools), WorkManager – Database: parallel query and DML , dbms_parallel_execute, dbms_job, parallel table functions – Multi threading: on every tier and even across tiers • Engage compute grid: multi node processing unit – For example: make Hadoop make those nodes work for you (divvy up the work and merge the results)
  • 27. BALANCE RESOURCES TO PREVENT CLOGGING
  • 28. HILTON UNION SQUARE – LAST FRIDAY
  • 29. THE POORLY PERFORMING BUSINESS PROCESS LOAN REQUEST Reject request Check Identity Loan Evaluate request with Federal Fraud Analysis Request Service Transfer Money Max 1 day Max 2 days Max 3 days Max 3 mins 98% is OK 99.99% is OK Max 6 days + 3 mins
  • 30. THAT DINNER IS TAKING MIGHTY LONG… Dinner is Served All are satisfied Max 3 hours + 3 mins
  • 31. THE DINNER PROCESS Dinner is John eats Mary eats Daisy Marty Served soup soup eats soup eats soup Daisy Marty John eats Mary eats eats eats main main main main Daisy John eats All are eats satisfied desert desert Max 3 hours + 3 mins
  • 32. THE SAME DINNER PROCESS John eats John eats soup main John eats Mary eats Mary eats desert Dinner is soup main All are Served satisfied Daisy Daisy Daisy eats eats eats soup main desert Marty Marty eats eats soup main Max 3 hours + 3 mins
  • 33. THE OPTIMIZED DINNER PROCESS John eats John eats soup main John eats Mary eats Mary eats desert soup main Dinner is All are Served satisfied Daisy Daisy Daisy eats eats eats soup main desert Marty Marty eats eats soup main Max 1 hours + 3 mins
  • 34. FURTHER OPTIMIZATIONS (IF NOT REFINEMENT) John eats John eats soup main John eats Mary eats Mary eats desert soup main Dinner is All are Served satisfied Daisy Daisy Daisy eats eats eats soup main desert Marty Marty eats eats soup main Max 53 mins
  • 35. THE POORLY PERFORMING BUSINESS PROCESS LOAN REQUEST Reject request Check Identity Loan Evaluate request with Federal Fraud Analysis Request Service Transfer Money Max 1 day Max 2 days Max 3 days Max 3 mins 98% is OK 99.99% is OK Max 6 days + 3 mins
  • 36. SPEEDING UP THE BUSINESS PROCESS LOAN REQUEST Check Identity with Federal Service Reject request Loan request Fraud Analysis Transfer Evaluate Money Request Max 1 day Max 3 mins Max 2 days Max 3 days Max 3 days + 3 mins
  • 39. PIPELINED PANCAKE PARTY: BEST PERFORMANCE
  • 40. PIPELINING ACROSS THE TIERS • Database: – Pipelined Table Functions – Pipes and Queues • Middle tier: Web Browser – Multiple threads – Queues (JMS) • Client tier: – AJAX “channels” – WebSockets RDBMS
  • 41. THE PINNACLE OF UN-PERFORMANCE
  • 43. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY
  • 44. FIRE AND FORGET IN THE REAL WORLD
  • 45. DO NOT DO IT… IMMEDIATELY (OR SYNCHRONOUSLY) • Submit information, file a complaint or request, start a process, trigger interaction – No immediate response is required! • Asynchronous – Start batch job (db) or worker-thread (java) • Or fire event – Write behind (from grid) (NO SQL) – DML Error log
  • 46. DO NOT DO IT… IN BATCH (UN-IMMEDIATELY) • Batch jobs can put peak load on a system – choking on line applications – Monthly reporting, quarterly prolongation, yearly calculation, • Batch jobs are increasingly unwanted in 24/7 – When is the “nightly” batch window? – Data not current (enough) by today’s standards: “batch has not run yet” • Batch jobs used to be desirable or needed as a result of technical limitations – that may not apply anymore • Continuous, near real-time operations – leveraging events, decoupling and integration architectures – are a serious alternative
  • 47. DON’T CALL US … WE’LL CALL YOU
  • 48. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST
  • 49. DO NOT DO IT… AS PER REQUEST • Push has two key advantages over poll – Most up to date information – Reduction in network traffic and load on server • Push is available in several flavors – Middleware to Browser: comet, ADF Active Data Service, WebLogic Server HTTP Channels, long poll, WebSockets in HTML 5 – Database to Middleware: JMS/AQ, Database Query Result Change Notification, Table Triggers, utl_http push to servlet – “piggy backing” – adding subscribed-to information in regular requests • Event driven architecture is based on push (of events) to mediating event handling infrastructure
  • 50. BITE OFF MORE THAN YOU CAN HAVE TO CHEW
  • 51. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST IN TOO BIG OR TOO SMALL STEPS
  • 52. DO NOT DO IT… IN TOO BIG STEPS • Performance perception is often: time until page is displayed and accessible (hourglass disappears) • Web pages frequently contain much more than is initially visible or even required – Tree nodes, inactive tabs, invisible popups, unopened dropdown lists • Performance perception can be enhanced by not initially loading what is not required • Use AJAX based post-loading to (lazy-)fetch content in subsequent, background round-trips • /*+ First Rows */ vs. /*+ All Rows */
  • 53. PENSION FUND – SEPTEMBER 2012 Employer < > Participants Job & Benefits
  • 54. FETCHING THE DATA OF THE PENSION FUND FOR THE WEB APPLICATION select * 1 record < > from employers where id = < 324> select * 100s records from participants where employer_id = < 324> select * 10s records from benefits where participant_id = <#>
  • 55. REPORTING ON MANY EMPLOYERS select * 100s records from employers 1 query select * 10k records from participants 100s queries where employer_id = <#> select * 100k records from benefits 10k queries where participant_id = <#>
  • 56. SINGLE BULK RETRIEVE REPLACING MULTIPLE QUERIES • Have the database bulk up the data retrieval • Return Ref Cursor, Types and Collections or JSON/XML Benefits Package select * from employers where id in <some set> select * from participants where employer_id in <some set> select b.* from benefits b join participants p on (p.id = b.participant_id) where p.employer_id in <some set>
  • 57. DO NOT DO IT… IN TOO BIG OR TOO SMALL STEPS • Every network round-trip and context-switch adds overhead – Compare dialing the operator for every digit in the telephone number you want to learn about • Bundling up information to reduce the number of round trips can be advantageous for performance – Bring all items from the shop in one round trip – Leverage collections and types, XML or JSON to retrieve complex, structured object graphs from DB – Zipping up multiple web resources in single archive – Mashing up icons or images into a single big picture – Piggy-back information onto requests
  • 60. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST IN TOO BIG OR TOO SMALL STEPS IN A CONVOLUTED WAY
  • 61. DO NOT DO IT… IN A CONVOLUTED WAY • Pragmatism can overcome theoretical purity (or old dogs’ tricks) – With good reason and well documented • Have client side Java Script directly access Google Maps – by-passing the application server • Have client directly access Database services • Use RESTful (JSON, CSV) rather than WS* and XML between browser client and application server • Use POJOs (Entities) throughout the application, from JPA to Web Tier – rather than copying/transferring • When that suffices, use simple substring i/o parsing big xml in DOM • Pass plain CSV/JSON/XML from DB through Java middle tier to Client when that is appropriate
  • 63. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST IN TOO BIG OR TOO SMALL STEPS IN A CONVOLUTED WAY IN A SUBOPTIMAL PLACE
  • 64. BOTTLENECK / CRITICAL CHAIN • Make sure that the bottleneck resource in your enterprise application is not used (at peak times) for work that is not critical or that can be outsourced – Use auxiliary resources – outside critical chain – Engage specialized servers, optimized for specific tasks – Manage resources in a strict manner • Resource manager (DB) or Work manager (WLS)
  • 65. DO NOT DO IT… LIVE EVENT PROCESSING IN A SUBOPTIMAL PLACE • The league of real time events – Continuous stream of a multitude of tiny events with hardly any payload, to analyze & aggregate – Sent from physical sensors (temperature, pressure, RFID, security gates), process sensors, Twitter, manufacturing equipment, database triggers, web servers, ESBs, stock trade tickers, sport statistics, RSS, network switches, …
  • 66. DO NOT DO IT… HTML RENDERING IN A SUBOPTIMAL PLACE • (X)HTML is not very compact – Information density of HTML is very low • DHTML, JavaScript & AJAX allow for Web Browser – Dynamic HTML rendering in browser – Dynamic, Partial Page Refresh • Most HTML presented JEE Application Server by application is pre- defined – Dynamic data content fetched from RDBMS or other services is small fraction RDBMS
  • 67. DO NOT DO IT… IN A SUBOPTIMAL PLACE • Do not perform a task in a resource that is not ideally suited for that task – If it directly contributes to overall performance
  • 68. DO NOT DO IT… IN A SUBOPTIMAL PLACE • Leverage database for what it’s good at – Data Integrity – Primary Key /Unique Key /Foreign Key – Aggregation – Sorting – Data Rule enforcement – Bulk DML and Copy data – Analytical Functions, Model clause, Rollup • Specialized engines for – Imaging and Document Processing – Match and Search – Speech Recognition – Cryptography – 3D – Real time Data Processing – ….
  • 69. ISYITF METHOD FOR PERFORMANCE IMPROVEMENT DO NOT DO IT … AT ALL MORE OFTEN THAN REQUIRED ON YOUR OWN IMMEDIATELY AS PER REQUEST IN TOO BIG OR TOO SMALL STEPS IN A CONVOLUTED WAY IN A SUBOPTIMAL PLACE
  • 70. ARCHITECT FOR PERFORMANCE Web Browser JEE Application Server RDBMS
  • 71. ARCHITECT(URE) FOR PERFORMANCE Services ( Google Maps, Translation, Conversion, Data Feeds -JS data (memory) Web Browser -Cookies HTML rendering - HTML 5 local db Validation, Calculation, Parsing “Processing” (image, cryption, compression, SETI) Fire&Forget piggy- Post load back (AJAX) by-pass JEE Application Server
  • 72. ARCHITECT(URE) FOR PERFORMANCE Services ( Google Maps, Translation, Conversion, Data Feeds -JS data (memory) Web Browser -Cookies HTML rendering - HTML 5 local db Validation, Calculation, Parsing “Processing” (image, cryption, compression, SETI) Fire&Forget push piggy- Post load back (AJAX) by-pass Search Edge Cache Load balancer & Match Sticky ip sessions, Throttling CEP Cache CMS Cluster Fail-Over JEE JEE Compute WorkManager (Session State) App App Parallel Threads Grid Result Store Server Server JMS Crypto Write Behind Node Node Node Image Print Server
  • 73. ARCHITECT(URE) FOR PERFORMANCE by-pass Search Edge Cache Load balancer & Match Sticky ip sessions, Throttling CEP Cache CMS Cluster Fail-Over JEE JEE Compute WorkManager (Session State) App App Parallel Threads Grid Result Store Server Server JMS Crypto Write Behind Node Node Node Image push Print Server Fire&Forget Client Result Post Cache load AQ/JMS HTTP Push DB QRCN Result Cache Aggregation Resource Mgt Materialized Filter & Sort Jobs Data Integrity View Bulk DML Pipelining Parallel Processing CBO RDBMS
  • 74. Services ( Google Maps, Translation, Conversion, Data Feeds -JS data (memory) Web Browser HTML rendering -Cookies Validation, Calculation, Parsing - HTML 5 local db “Processing” (image, cryption, compression, SETI) Post load Fire&Forget push piggy- back (AJAX) by-pass Edge Cache Load balancer Sticky ip sessions, Throttling CEP Cache JEE JEE CMS Cluster Fail-Over Compute (Session State) App App WorkManager Grid Parallel Threads Result Store Serv Serv JMS Cryp Write Behind erNo erNo to Node de de Image push Print Server Fire&Forget Client Result Post Cache load AQ/JMS HTTP Push DB QRCN Result Cache Aggregation Resource Mgt Materialized Filter & Sort Jobs View Data Integrity Pipelining Bulk DML Parallel Processing CBO RDBMS
  • 75. SUMMARY • Performance requirements are derived from measurable and meaningful business objectives • Unavailability equals Zero Performance – Treat Performance and Availability elements in the same equation • Performance should [also] be addressed in a top-down approach, across all tiers and constituent parts • Some ISYITF guidelines: – Do not do it … [AT ALL | MORE OFTEN THAN REQUIRED | ON YOUR OWN | IMMEDIATELY | AS PER REQUEST | IN TOO BIG OR TOO SMALL STEPS | IN A CONVOLUTED WAY | IN A SUBOPTIMAL PLACE ]

Notes de l'éditeur

  1. Process
  2. Na een upgrade van SOA Suite 10g (ESB) naar OSB 11g, 65% slechtereresponsetijd
  3. Na een upgrade van SOA Suite 10g (ESB) naar OSB 11g, 65% slechtereresponsetijd
  4. ISYITF = it is staring you in the face
  5. Cache – spreekuit: kasjeKastjesBrowser: Client (browser, cookie or Java Script memory; HTML 5 offers persistent, cross session local db like storage)App Server : Edge (WebServer)JVM (and cluster)Cross cluster shared cachedb or memory gridDatabase (not requery at least)
  6. http://thecleancoder.blogspot.com/2010/08/why-clojure.htmlWhat this means is that our computers can still get faster, but only if we put multiple CPUs on a chip.  This is why we&apos;ve seen all these multi-core processors showing up.  And thatmeans that programs that need greater speed will have to be able to take advantage of the multiple cores.
  7. Additional bar tendersNo improved performanceIn fact: some degradation(new) Bottleneck: coffee machinesSystem is I/O bound, increase CPU will only increase the ‘threading overhead’ and degrade performanceSame with more toilets: the washing basins become the new bottle neckSynchronization points
  8. Compare ECT:Unload all containers, than start moving out (train?)Unload one, put on truck and start driving; then unload next one
  9. Plaatje van printerPrint Job wordtnaar printer gestuurdWil je zandloper tot de printer klaar is met de klus?Of een melding ‘job has started’ en doorgaan met je werk
  10. Do not do (synchronous) work in resources that are not ideally equipped/do that work in a suboptimal way
  11. Copy data in PL/SQL (rather than bring from DB to Middletier, copy, send back again)