SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
AD208 IBM Domino® XPages
                     Performance in a Nutshell
                     Originally presented by:
                     Maire Kehoe | Advisory Software Engineer
                     Tony McGuckin | Software Engineer

                     Presented today by:
                     Matthew Fyleman | Product / Project Manager - We4IT



© 2013 IBM Corporation
Please note:

       IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal
       without notice at IBM’s sole discretion.
       Information regarding potential future products is intended to outline our general product direction
       and it should not be relied on in making a purchasing decision.
       The information mentioned regarding potential future products is not a commitment, promise, or
       legal obligation to deliver any material, code or functionality. Information about potential future
       products may not be incorporated into any contract. The development, release, and timing of any
       future features or functionality described for our products remains at our sole discretion.




       Performance is based on measurements and projections using standard IBM benchmarks in a
       controlled environment. The actual throughput or performance that any user will experience will
       vary depending upon many factors, including considerations such as the amount of
       multiprogramming in the user's job stream, the I/O configuration, the storage configuration, and the
       workload processed. Therefore, no assurance can be given that an individual user will achieve
       results similar to those stated here.




2   © 2013 IBM Corporation
Welcome and Introductions

   Maire Kehoe
     ─ Advisory Software Engineer: IBM Ireland
         – IBM Lotus® Domino XPages
         – IBM Lotus® Component Designer 6.0
         – XPages Runtime SME, XPages TeamRoom, ExtLib
         – Joined IBM 2003




   Author
     ─ XPages Portable Command Guide




3   © 2013 IBM Corporation
Welcome and Introductions

   Tony McGuckin
     ─ Senior Software Engineer: IBM Ireland
         – XPages Runtime SME
         – Product & Application Template Development
         – Customer Enablement & Proof-of-Concept Development
         – Co-creator of global XPages@... Workshops
         – Lotus OneUI Adoption Workgroup




   Author
     ─ Mastering XPages
     ─ XPages Portable Command Guide




4   © 2013 IBM Corporation
Outline
   XPages Architecture & Overview of a request
      ─ Environment – Domino HTTP server, OSGi plugins, loading NSF design elements
      ─ JSF & XPages control tree & lifecycle
      ─ Backend calls to get data sets

   The Tools
      ─ for finding and understanding performance problems

   AppDev choices
      ─ Most problems we're seeing in production applications are AppDev issues – in the Application
        Development and the XPage design

   Configuration options
      ─ And discuss the different types of performance issues they solve

   Shared Design & XPiNC considerations
      ─ Sharing design between applications, and XPiNC being XPages in the Notes® Client


5    © 2013 IBM Corporation
XPages Architecture
     & Overview of an
        XPage request


6   © 2013 IBM Corporation
What is XPages?
The Notes/Domino App Dev Solution for Modern Web Applications
  Standards-based Web 2.0 rapid application development framework

          ─ Uses JavaServer Faces (JSF)/JavaScript on server side
          ─ Uses HTML/JavaScript/Dojo(TM) on the client side
       Java and OSGi-based runtime
          ─ fully integrated into Domino server, Notes client, IBM XWork server
       Component-based portable development model (write-once-run-anywhere)
       Set of design elements in Domino Designer
       Provides built-in Domino data sources
          ─ Out-of-the-box data sources for binding to Domino views and documents
          ─ Efficiently manages hierarchies of documents, seamlessly handles data model changes
       Highly extensible and customizable
          ─ Enables customers/business partners to build their own components, controls, data sources etc
          ─ e.g. XPages Social Enabler, XPages RBMS integration




7       © 2013 IBM Corporation
What is an XPage?

   A Domino design element, just like the traditional form or view
   A page of XML tags known as XSP markup
   Can be an aggregation of other mini-XSP files known as Custom Controls
   Each XSP tag represents a design artifact … e.g. controls
      ─ UI Control: like a simple button, link, or as complex as a calendar
      ─ Data Source: a mechanism that fetches data from a particular source for display in a control
      ─ Event Handler: custom logic that “handles” events on a page, typically done in JavaScript
      ─ Simple Action: a high level piece of executable logic, like Open a Page, Save a Document




8    © 2013 IBM Corporation
What is an XPage?
                                    XSP/JSF Hierarchy of
          XSP Markup – XML + HTML      Components




                                                           HTML in a
                                                           browser




9   © 2013 IBM Corporation
XPages Architecture
                 Client Request
                                    Domino HTTP Server



                                     XPages Servlet Engine       2.4 servlet engine




                                                                         Virtual J2EE modules
                                                                         No WAR deployment
                                                                         required

        The server directly reads
        the design elements from
        the NSF database


                                          NSF database containing the design
                                          elements & the data




10   © 2013 IBM Corporation
XPages Architecture – 8.5.2++
                         NSF Applications                                 NSF Applications




                                        XPages Extensions                                    XPages Extensions
                                          OSGi bundles                                         OSGi bundles


     XPD Profile               XPages                       XPD Profile         XPages
                               Runtime                      +Web                Runtime
                                                            Container
                OSGi Runtime                                      OSGi Runtime

                Domino HTTP Task                                  Notes Client Process


                 Domino Server                                     Notes Client
The XPages runtime is deployed as a set of OSGi bundles (plugins/jars)
Extensions: within an NSF Application, or as separate XPages Extension bundles
       ─ XPages Open Source Libraries [ExtLib] (8.5.3UP1 | OpenNTF.org) (likely in N/D Next)
       ─ XPages Experimental Extensions [ExtLibX] (OpenNTF.org) (not in N/D)
       ─ 3rd party XPages extensions & use of 3rd party plugins (Apache, JDBC etc.)

11   © 2013 IBM Corporation
XPages extends JavaServer Faces Framework (JSF 1.1)

The XPages Request Processing Lifecycle Phases
  1. Restore View – Retrieves the JSF view for the request

  2. Apply Request Values – Updates the JSF components to update their state

   based on values from the current request
  3. Process Validations – Convertors and/or Validators invoked

  4. Update model values – Application data is updated with new values. Values

   are written to the Domino back-end document during this phase.
  5. Invoke applications – Application logic executed

  6. Render response – Generates the response and saves the state of the view




12   © 2013 IBM Corporation
XPages extends JavaServer Faces Framework (JSF 1.1)




                   http://www.ibm.com/developerworks/java/library/j-jsf2/




13   © 2013 IBM Corporation
A Request




14   © 2013 IBM Corporation
Tools
      for performance


15   © 2013 IBM Corporation
XPages Toolbox v1.2

    XPages based Application
       ─ Runs on the Domino server or the Notes client
       ─ An NSF needs to be installed on the Domino server/Notes client
       ─ A profiler jar file should be added to the JVM launch options
    Measures the CPU performance and the memory allocation
    Published on OpenNTF.org
       ─ Open source project
       ─ http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=XPages
         %20Toolbox
    Extended in 8.5.2 to support Backend classes profiling




16    © 2013 IBM Corporation
XPages Toolbox v1.2

                              CPU Profiler

                                   Memory Profiler




17   © 2013 IBM Corporation
Heap Dumps - XPages Toolbox v1.2
    Generate a heap dump of the JVM running in the HTTP task
      ─ A button in the XPages profiler generates the heap dump
      ─ A command from the Domino console [added 8.5.3]
               –   tell http xsp heapdump (triggers com.ibm.jvm.Dump.HeapDump())
               –   tell http xsp javadump (triggers com.ibm.jvm.Dump.JavaDump())
    Analyze the heap dump using the Eclipse Memory Analyzer
      ─ http://www.eclipse.org/mat/
      ─ and the related extension for IBM JVMs:
        IBM Diagnostic Tool Framework
        for Java Version 1.10 extension


    Heap dumps occur in production
      ─ when XPage(s) fail due to a
        java.lang.OutOfMemoryError




18   © 2013 IBM Corporation
More Tools
    Print statements
       ─ In rendered/visible computations to see how often executed
            – print("panel2 evaluating rendered property");

       ─ In the XPages root control events: before/afterPageLoad, afterRestoreView,
         before/afterRenderResponse. Custom control root events: before/afterPageLoad.
       ─ In the document data source events: queryNewDocument, postSaveDocument, etc.
            – “post” means after, “query” means before and return true/false to do New/Open/Save

    Task Manager and/or Process Explorer
       ─ Shows CPU usage & process memory usage as it happens
       ─ Heap memory usage will be a subset of process memory, but heap dumps are only a snapshot
    Browser developer tools
       ─ for watching network transactions, partial updates, response times
       ─ Firefox(TM) – Firebug add-on. Internet Explorer(TM) – menu Tools, Developer Tools.
       ─ XPiNC – equivalent to Firefox 3.6.1, also in xsp.properties, find and enable: isDebug:true
    Java Debugging
       ─ Degrades performance but can inspect objects, step into code. Use the Eclipse Java debugger.
       ─ In Dominonotes.ini add these 2 options: JavaEnableDebug=1
       ─ JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000
19    © 2013 IBM Corporation
AppDev Choices
      for performance


20   © 2013 IBM Corporation
AppDev XPage design optimizations

    Open Page simple action vs links or button with window.location JS
    Reducing server phase processing
       ─ Use partial update where possible
       ─ Use partial execute where possible
       ─ Use disableValidators & immediate event
    Minimizing work in rendered / visible computations
    Repeats & views
       ─ Using viewEntry.getColumnValue instead of viewEntry.getDocument.getColumn
       ─ Use Domino View data source dataCache property where possible & scope property
    Load-time vs Runtime
       ─ Using loaded vs rendered and other load-time optimizations
       ─ ExtLib Dynamic Content – allows partial re-loading so more use of load-time optimizations
    Loading resources in the browser
       ─ CSS & browser JS – extract to separate files. Minify & compress files
       ─ Images – use correct size & format. Use CSS Image Sprites as possible


21    © 2013 IBM Corporation
Using GET requests - Links & browser location redirect
    Instead of Open Page simple action, use links or Browser
    Script to redirect:
          <xp:link text="Open" id="link1">
                  <xp:this.value><![CDATA[#{javascript: "/topicThread.xsp?documentId="
                  + rowData.getUniversalID() + "&action=editDocument"}]]></xp:this.value>
          </xp:link>
          <xp:button value="Edit" id="button1">
              <xp:eventHandler event="onclick" submit="false">
                  <xp:this.script><![CDATA[window.location.href = "/topicThread.xsp?documentId="
                      + "#{javascript:rowData.getUniversalID()}" + "&action=editDocument"; ]]>
                  </xp:this.script></xp:eventHandler>
          </xp:button>

Pros:
  Fewer browser round-trips, less server processing

      ─ Open Page simple action means a submit & lifecycle before redirect to the new page
Cons:
  Not always possible – e.g. if need Save Document before Open Page

      ─ Or any server-side action or script needs to execute before moving to the new page

22    © 2013 IBM Corporation
Full lifecycle
          ─ Most phases of the lifecycle iterate through the server-side control tree




23   © 2013 IBM Corporation
Partial Update
     ─ Partial Update reduces the last phase: refreshMode="partial" refreshId="panel2"




24   © 2013 IBM Corporation
Partial Update
Pros:
  Reduced control processing in the render response phase

       ─ Means less work on the server - render response is the most intensive phase
    Reduced network usage – smaller response from server.
    Better browser experience
       ─ rest of the page is still visible while waiting for a response
       ─ inserting small sections into the page is much faster than reloading a full page.
Cons:
  Dependancy on computations outside of the partial update area

       ─ Other areas of the control tree are not processed,
         so any SSJS scripts in those other controls will not be run,
         so enabling Partial Update where it was previously full update may lead to functional problems
         where expected changes did not occur, or some state is out-of date.
    Only one area may be partial updated by default
       ─ In browser JavaScript you can schedule later partial updates of related areas,
         but any concurrent requests will wait for exclusive access to the server-side control tree
         before processing on the server.


25    © 2013 IBM Corporation
Partial Execution
 ─ Partial Exec reduces the 3 data processing phases: execMode="partial" execId="panel2"




26   © 2013 IBM Corporation
Partial Execution
Pros:
  Reduced control processing in the 3 data-processing phases

       ─ Means less work on the server, faster response times
Cons:
  Dependancy on Edit Box values outside of the partial exec area

       ─ Submitted values from Edit Boxes and/or other input controls in other areas of the control tree
         are not processed, so any control values and document fields in those other areas will not be
         updated. Enabling Partial Exec where it was previously full execution may lead to functional
         problems where values are out-of date in the onclick script or in the redisplayed page.
    onclick Event Handler must be in the partial exec area
       ─ The applyRequestValues phase prepares for the invokeApplication phase.
         The onclick simple action or SSJS script won't occur if outside the partial exec area
    execMode only added in 8.5.1 (not in 8.5.0)
    execId slightly difficult to select in Designer
       ─ Select your button, in the Outline view, toggle open the button, select the child Event Handler
         control, then set the execId property on the Event Handler.
       ─ [Better UI proposed in Notes/Domino Next – in the Events tab]


27    © 2013 IBM Corporation
Both - Partial Update & Execution
     ─ Can combine partial update and partial execute: often exec and update the same area
       or exec a smaller area containing just the Event Handler or Event Handler and some inputs




28    © 2013 IBM Corporation
disableValidators & immediate
      ─ For when you need a server-side action, but don't want the usual Data Processing
disableValidators
      ─ 3 Data Processing Phases are same as usual, except each EditBox validator will do nothing
      ─ Converters are still applied, document fields are updated without validation
Immediate
      ─ applyRequestValues phase is combined with invokeApplication phase.




      ─ No other Data processing phases. Document fields not updated.
      ─ Event Handler onclick scripts and renderResponse phase computed values
        will tend to see out-of-date values. To see up-to-date but not-converted values use:
              var editBox1 = getComponent('editBox1');
                   var value = editBox1.getSubmittedValue();
                   if( null == value )
                              value = editBox1.getValue();
29   © 2013 IBM Corporation
Minimizing work in rendered / visible computations
    The rendered property is computed in all 5 lifecycle phases
       ─ Most properties, like CSS “style” are only computed in the renderResponse
       ─ Edit Box and input “value” properties are used in Data Processing phases & renderResponse
       ─ Data Source properties are computed during renderResponse
         & results are cached for the next request's Data Processing & invokeApplication phases
    Avoid re-computing performance-heavy values in every rendered property
       ─ e.g. @DbLookup, @DbColumn, getDocumentByKey
       ─ In the rendered property, save the computed boolean to a viewScope variable
              if( !viewScope.computedDisplayPanel2 ){ // should compute
                    viewScope.isDisplayPanel2 = @DbLookup(...).contains("unread");
                    viewScope.computedDisplayPanel2 = true;
              }
              return viewScope.isDisplayPanel2;
       ─ Subsequent re-computing of rendered will not enter the “if” statement, and will complete quickly
       ─ If the computation depends only on user session information, save to sessionScope
       ─ If the computation depends on a value in a comboBox,
           remove the viewScope boolean in the comboBox onchange event


30    © 2013 IBM Corporation
Avoid viewEntry.getDocument() in large repeats

    viewEntry.getDocument() is a non-trivial
       ─ The API viewEntry.getDocument() is a call to the backend classes
       ─ Avoid calling it frequently, similar to avoiding @DbLookup in the rendered property
       ─ It should only be used for very small data-sets
       ─ It can easily cause performance delays when called repeatedly in 100s of rows

    Use viewEntry.getColumnValue instead.
       ─ If the value you need isn't an existing column value of the view,
       ─ Consider defining a new view that has all the column values you need


    In general, avoid complicated or slow operations in repeats
       ─ Even relatively benign operations can cause problems when repeated frequently
       ─ If you need to save row-related values to a viewScope variable,
         use this rowId in the variable name:
               var rowId = getComponent("viewPanel1").getDataModel().getRowId();
       ─ in Domino views it's the NoteID, but the API is designed to work with non-Domino rows too


31    © 2013 IBM Corporation
dataCache = full or id

    The Domino View data source by default saves all view entry column values
       ─ They are computed in the render response Phase, saved & restored between requests
         and reused in the subsequent request's Data Processing Phases and invokeApplication phase
    Advantages:
       ─ to allow onclick events in repeat rows to use viewEntry.getColumnValue
           and still be reliable when rows have been deleted by other users
            between browser requests.
       ─ getColumnValue is useful with View Panel checkboxes for selected rows
    Disadvantages:
       ─ For large data sets, it takes a lot of work to save and restore all the viewEntries
       ─ That may cause delays, and requests will wait longer before displaying in the browser
       ─ The viewEntries use a lot of memory, which may contribute to OutOfMemoryError failures
       ─ Not needed usually, except in the case mentioned.
    Instead of saving all state use:
         <xp:dominoView dataCache="id" ... />



32    © 2013 IBM Corporation
Using loaded vs rendered and other load-time optimizations
    Compute the loaded property on conditions
       ─ where you could compute the rendered property and save it to the view scope
       ─ it would never need to be recomputed for the rest of the interaction with this page
       ─ you don't need access to a repeat's rowData or viewEntry,
         or to any control's clientId: #{id:inputText1}
    Loaded
       ─ is only computed once in the createView phase – not re-computed in the 5 usual phases
       ─ false means the control is not created. So it can never be rendered.
       ─ true means the control is added to the control tree.
           You can still compute rendered when loaded evaluates to true.
    During the createView phase, things are different
       ─ Repeat controls do not repeat, so viewEntry objects are not available
       ─ ClientIds may evaluate to values that will change in subsequent requests
       ─ Scripts can't access controls in the control tree
       ─ When in repeat controls, Custom Control “compositeData” property values are unreliable
    Same for “Compute On Page Load” vs “Compute Dynamically” computed values
    before/afterPageLoad events are also during the createView phase


33    © 2013 IBM Corporation
ExtLib Dynamic Content
    Allows partial re-loading of part of an XPage in response to an event
       ─ so the loaded property is no longer restricted to calculations depending on values
         that are the same for the duration of this XPage
       ─ Allows more use of load-time optimizations
       ─ Still avoid re-evaluating during rendered evaluations
       ─ Loaded is only evaluated during the initial page load
         and during any events that trigger a reload of this section of the XPage
    Also allows choosing between child/facet areas to load
       ─ Both at initial page load, and
       ─ Changing which child/facet area is loaded in response to an event
    Other ExtLib controls are dynamic-enabled
       ─ ExtLib Tab Container control can load new tabs and content in response to an event
       ─ ExtLib Dialog control can load content just before the dialog is displayed,
         so not taking up memory on the server until needed.
    The ExtLib set of controls are available
       ─ part of the released 8.5.3 UpgradePack1
       ─ on OpenNTF.org – also has the ExtLibX controls (including the experimental JDBC support)
       ─ planned to be included in Notes/Domino Next (present in the public Beta)

34    © 2013 IBM Corporation
Loading Resources in the browser

    For better performance in the browser.
       ─ for your resources (CSS files, images and browser JavaScript files), you want
       ─ Fewer requests to the server
       ─ Smaller files retrieved from the server (less bandwidth)
    Use the browser's cache where possible
       ─ use the same URLs to reference the same server files
    Inline JavaScript in a web page executes inline
       ─ as the page is being displayed, blocking the display of the rest of the page to the user
       ─ Use XSP.addOnLoad blocks to defer execution of scripts until after the initial inline load
    Browsers have limits on the number of concurrent network requests
       ─ Keeping it down to fewer files really matters




35    © 2013 IBM Corporation
CSS & browser JS
    Move inline CSS and browser JS to separate files
       ─ Extract CSS and browser JavaScript from inline in the HTML output
         to separate files (.css and .js),
       ─ to keep the HTML file size down
       ─ to allow browser caching of the CSS and JS files
       ─ Avoids repeating complicated CSS & JS snippets at multiple locations in the HTML
    Minify & compress CSS and JS files.
       ─ There are Dojo Toolkit build tools to minify.
       ─ In CSS files, removes whitespace and comments.
       ─ In JavaScript files, minify will also rename variables to shorter names.
       ─ Save zipped/compressed .gz copies of server-wide .css and .js files
       ─ the Domino HTTP server will serve the smaller .gz files to most browsers
          (older browsers don't support the feature)
    Since 8.5.3, use the XPages aggregate option in the Application Properties
       ─ Appends CSS files together, for server-wide files, and separately for application-specific files
       ─ Is aware of Dojo Modules, so can aggregate JS files that refer to other Dojo module .js files,
           and XPage Dojo Module resource references that would appear in the HTML <head> tag.



36    © 2013 IBM Corporation
Images

    Use correct file type depending on content
       ─ JPEG for complexed detailed images
       ─ PNG/GIF for simple images, fonts, transparencies
    Use the HTML <img tag “width” and “height” attributes
       ─ For faster HTML layout in the browser
    Size the image to size you intend to use
       ─ Resizing using html attributes height and width will delay the rendering of your page
       ─ Images larger than necessary will waste bandwidth
    Use CSS Image Sprites
       ─ If you have multiple small images, make a single larger image containing the smaller images
       ─ And use CSS to display just the relevant subset image at a <SPAN location in the page
       ─ For semantically significant sprites, provide an accessibility “title” attribute
          (as sprites don't use the IMG “alt” attribute, but you still want to assist blind users)
       ─ There's no specific XPages support for sprites, but they're used in the XPages OneIU themes




37    © 2013 IBM Corporation
Configuration Options



38   © 2013 IBM Corporation
Configuration Options - General Performance options
notes.ini
  HTTPJVMMaxHeapSizeSet=1

  HTTPJVMMaxHeapSize=256M

      ─ The JavaTM memory allocation for the HTTP task
      ─ For servers using XPages use 256MB on 32bit machines, 1024MB on 64bit machines.
    JavaEnableDebug=1
    JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000
    JavascriptEnableDebug=1 (in Notes/Domino Next)
      ─ Debug has a performance degradation
    XPagesPreload=1
    XPagesPreloadDB=teamdisc.nsf/ByAuthor.xsp
      ─ Will be covered in the XPiNC section, though also applies to the server
Domino Administrator
  HTTP server "Enable logging to" disabled

  HTTP server thread count – defaults to 40.



39   © 2013 IBM Corporation
Configuration Options - xsp.properties
           Documented in Dominodatapropertiesxsp.properties.sample
    xsp.persistence.mode
       ─ Relates to OutOfMemoryError and server-side control tree caching. Also the related options:
       ─ xsp.persistence.file.maxviews, xsp.persistence.file.gzip, xsp.persistence.file.threshold,
         xsp.persistence.dir.xspstate

    xsp.application.timeout=30min
    xsp.session.timeout=30min
       ─ Server timeouts
    ibm.jscript.cachesize
       ─ Server-side JavaScript expression cache
    xsp.resources.aggregate
       ─ Fewer requests for CSS and JS files, aggregated files are cached in server & browser
    xsp.compress.mode=gzip
       ─ Network files are smaller (enabled by default)
    xsp.expires.global=10days
       ─ Browser expiration for CSS & JS global files [global == not in application]

40    © 2013 IBM Corporation
Shared Design
     + XPages in the
        Notes Client


41   © 2013 IBM Corporation
Shared Design and some XPiNC issues & optimizations

    Notes has the feature “Single copy template”
       ─ Enable in a template, causes applications that will inherit from this template to include pointers
         or reference notes to this template's design elements, rather than including copies of the design
         elements themselves.
       ─ Keeps the NSF file size down, XPages runtime memory size uneffected – still loads the design
         elements into memory again for each application that uses the design elements.
    XPages has the feature “Single copy XPage design”
       ─ And the corresponding “XPage design store path”. Both added in 8.5.2.
       ─ Multiple applications point to a common nsf (not ntf)
       ─ Browser URLs will use the shared XPages css, images,
         browser JavaScript, giving browser caching.
       ─ XPages runtime server code will mostly share the same
         J2EE module – shared classloader, design elements
         loaded once, instead of per-application, etc.
       ─ App still behaves as a separate instance for:
         database object, applicationScope, sessionScope
       ─ Classic design elements (Views, Form, Agents...)
         are not shared
       ─ http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Single_Copy_XPage_Design

42    © 2013 IBM Corporation
43   © 2013 IBM Corporation
Single copy XPage design

                              discussion1.nsf     .xsp


                                                            .css & .gif

                                                                           User browser


           HTTP                         sharedDiscuss.nsf
           Server
                                                                 .css & .gif




                                                  .xsp                         User browser
                              discussion2.nsf



44   © 2013 IBM Corporation
XPages Preload
    Notes.ini option, new in 8.5.3
       ─ XPagesPreload=1
       ─ XPagesPreloadDB=myServer!!myDb.nsf/myXPage.xsp,myLocalDb.nsf/test.xsp
    After restart, the first time an application is used, there's a delay
       ─ The first user to open an XPage in the application will have to wait while the OSGi plugins are
         loaded and the XPages runtime platform-wide settings are read, the XPage.class file is read
         from the NSF, etc.
    Preload will load the XPages runtime OSGi plugins
    PreloadDB will “fake” a request to the listed XPages
       ─ So that the initialization happens during the preload, just after startup, instead of during the first
         browser request for the application.
       ─ [It only loads the XPage itself, doesn't follow redirects or load CSS files, etc.]
    Preload in XPiNC
       ─ The “!!” syntax is used in XPages in the Notes Client (XPiNC)
         for loading remote applications, as opposed to local applications / local replicas.
       ─ Preload is especially useful with XPiNC remote apps,
         because the delay of fetching Design Elements and class files across the network is much
         slower than the server delay of reading them from the server file system.
       ─ Admins can push the notes.ini setting out to all Notes clients
45    © 2013 IBM Corporation
HTTP server                                    Cold Start
 Request                       OSGi & XPages runtime
                     time
                                                  memory            File System



                                NSF class files & design elements


                                                   memory            File System


                               NSF data


                                                  memory            File System
     Response




46    © 2013 IBM Corporation
HTTP server                                  Warm Start
 Request                      OSGi & XPages runtime
                    time                         memory

                              NSF class files & design elements

                                                  memory

                              NSF data


                                                 memory           File System

     Response




47   © 2013 IBM Corporation
XPiNC optimizations
    You can combine both “Single copy XPage design” and “XPagesPreload”
       ─ However there were some issues when combining them in XPiNC
         in the 8.5.3 GA release, fixed in 8.5.3FixPack3.
    XPiNC issues waiting for network traffic
       ─ Network traffic can be grossly inflated by sub-optimal app design practices, e.g.
           – A computeWithForm prop on a Domino doc data source will pull the Form across the net

                –   A Form element is arbitrarily large, e.g. includes all subforms and any other contained
                    elements – each fetched individually.
       ─ Inefficient data access operations, e.g.
            – Opening documents on-the-fly within a data iterator / repeat control

                –   Performing dynamic remote NSF lookups when computing “rendered” property values
       ─ Performance degrades even further on high latency networks
       ─ Worse case
                –   There was a reported “perfect storm” app having 8minute delay on first opening in XPiNC
                –   Optimize the application to reduce the usual AppDev issues (worse in XPiNC) down to 2min
                –   Use XPagesPreload, no longer noticeable
       ─ There are proposed Notes/Domino Next options
         to improve the XPiNC behavior on slow networks for some scenarios

48    © 2013 IBM Corporation
Local HTTP server                         XPiNC Cold Start
 XPiNC                               OSGi & XPages runtime
 browser
 Request             time
                                                                   Local File
                                             memory
                                                                    System



                                     NSF class files & design elements

                                                                                    Server File
                                             memory                 Network          System


                                     NSF data


                                                                                    Server File
                                             memory                 Network          System


     Response

49    © 2013 IBM Corporation
Ending & related



50   © 2013 IBM Corporation
Before You Leave




         Please complete your session survey
         Session ID:
          AD208
         Session Title:
          “IBM Domino XPages Performance in a Nutshell”




51       © 2013 IBM Corporation
Q&A




                                 Contact Information:
                              tony.mcguckin@ie.ibm.com
52   © 2013 IBM Corporation
                                 mkehoe@ie.ibm.com
XPages Portable Command Guide
            – Book Signing – Wednesday – 2:30-3:30pm


    Tuesday
      ─ 01-30pm AD206 IBM Lotus Domino XPages: Embrace, Extend, Integrate.
                    N Heidloff, P Edwards
      ─ 03-30pm AD203 IBM Domino Designer: Tips and Tricks for Maximum Productivity.
                    K Howard, D O'Connor
    Wednesday
      ─ 01-30pm AD204 How To Develop Great Applications Using XPages Design Patterns.
                    M Donnelley, T McGuckin
      ─ 03-00pm AD215 Let it Flow: XPages are Workflow's New Best Friend. Q Liang, S Wissel
      ─ 04-15pm AD205 Successfully Delivering XPages Projects - All Things Considered.
                    M Donnelly, T McGuckin, P Edwards
      ─ 04-15pm AD202 Debug Server Side Javascript, Java, and XPages Apps Using the SSJS Debugger.
                    M Blout, D O'Connor
(Was Sunday)
           08-00am JMP401 Master Class: XPages Performance - Inside Out. T McGuckin, M Kehoe

53    © 2013 IBM Corporation
More Information
         XPages.info – One Stop Shopping for XPages
              ─ http://xpages.info

         XPages Forum – Got Questions, Need Answers?
              ─ http://xpages.info/forum

         OpenNTF – Open Source Community
              ─ http://www.openntf.org

         Domino Application Development Wiki
              ─ http://www.lotus.com/ldd/ddwiki.nsf

         XPages Blog
              ─ http://xpagesblog.com

         IBM Educational Offerings
              ─ http://www.ibm.com/software/lotus/training/n8deducationofferings.html


54       © 2013 IBM Corporation
Technical Education & Certification
         IBM Education XPages Courses
           Course Name

           Fundamentals of IBM Lotus Domino 8.5.1 Application Development

           Introduction to IBM Lotus Domino 8.5 XPages

           Developing IBM Lotus Domino 8.5.2 Applications: Intermediate XPage Design

           Developing IBM Lotus Domino 8.5.2 Applications: Advanced XPage Design (New 6/11)

           Modernizing Domino Applications (New 8/11)

         Learning Roadmaps (New Developers)
              ─ New Developers
              ─ Experienced Developers

         IBM Resells TLCC XPages Courses (and Other App Dev & Admin Courses)
         New XPages Certification: Developing IBM Lotus Domino 8.5.2 Applications:
          Advanced XPage Design

55       © 2013 IBM Corporation
Mastering XPages
         Factoids...
              ─ Comprehensive 7 Part, 785 page volume
              ─ IBM Press publication
              ─ Authored by lead members of XPages development team
              ─ Features contributions from other key community members
              ─ Covers all aspects of XPages application development
              ─ Example-driven approach focusing on practical problems
              ─ Includes sample NSF downloads




         Available now @ IBM Connect bookstore
         Available online
              ─ www.ibmpressbooks.com/bookstore/product.asp?isbn=0132486482
              ─ www.amazon.com/Mastering-XPages-Step-Step-Application/dp/0132486318

56       © 2013 IBM Corporation
XPages Portable Command Guide
         Factoids...
              ─ Compact 320 page volume
              ─ IBM Press publication
              ─ Authored by members of XPages & Domino Designer dev teams
              ─ Perfect complement to the popular Mastering XPages book,
                helping experienced XPages developers go even further
              ─ Thoroughly covers XSP properties, Command Manager
                instructions, INI variables, OSGi console commands,
                debugging, logging and more.
              ─ Dozens of practical examples providing immediate solutions




         Available now @ IBM Connect bookstore
         Available online:
              ─ www.ibmpressbooks.com/bookstore/product.asp?isbn=0132943050
              ─ www.amazon.com/XPages-Portable-Command-Guide/dp/0132943050
57       © 2013 IBM Corporation
XPages Extension Library
         Factoids...
              ─ Comprehensive 600 page volume
              ─ IBM Press publication
              ─ Authored by a team of all-star XPages experts,
                Featuring contributions from key community members
              ─ Take full advantage of the XPages Extensibility
                Framework, Library & API
              ─ Step-by-step guide for developers of all experience levels
              ─ Combines reference material and practical use cases


         Available now @ IBM Connect bookstore
         Available online:
              ─ www.ibmpressbooks.com/bookstore/product.asp?isbn=0132901811
              ─ www.amazon.com/XPages-Extension-Library/dp/0132901811




58       © 2013 IBM Corporation
Legal disclaimer
     © IBM Corporation 2013. All Rights Reserved.
       The information contained in this publication is provided for informational purposes only. While efforts were made to verify the completeness and accuracy of the information contained in this publication,
       it is provided AS IS without warranty of any kind, express or implied. In addition, this information is based on IBM’s current product plans and strategy, which are subject to change by IBM without notice.
       IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this publication or any other materials. Nothing contained in this publication is intended to, nor shall have
       the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.
       References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced
       in this presentation may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any
       way. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other
       results.
        Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary
       depending upon many factors, including considerations such as the amount of multiprogramming in the user's job stream, the I/O configuration, the storage configuration, and the workload processed.
       Therefore, no assurance can be given that an individual user will achieve results similar to those stated here.
       Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.




59         © 2013 IBM Corporation

Contenu connexe

Tendances

IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...William Holmes
 
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...marjoramg
 
Soccnx III - Using Social Controls in XPages
Soccnx III - Using Social Controls in XPagesSoccnx III - Using Social Controls in XPages
Soccnx III - Using Social Controls in XPagesLetsConnect
 
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...Stephan H. Wissel
 
AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...
AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...
AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...Stephan H. Wissel
 
Id101 what's new in ibm lotus® domino® 8.5.3 and beyond final
Id101 what's new in ibm lotus® domino® 8.5.3 and beyond finalId101 what's new in ibm lotus® domino® 8.5.3 and beyond final
Id101 what's new in ibm lotus® domino® 8.5.3 and beyond finalSaurabh Calla
 
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1IBM Connections Developers
 
X pages jumpstart jmp101
X pages jumpstart jmp101X pages jumpstart jmp101
X pages jumpstart jmp101pdhannan
 
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-finalRohit Kelapure
 
Soccnx III - IBM Connections 3.0.1 Integration with Sametime
Soccnx III  - IBM Connections 3.0.1 Integration with SametimeSoccnx III  - IBM Connections 3.0.1 Integration with Sametime
Soccnx III - IBM Connections 3.0.1 Integration with SametimeLetsConnect
 
IBM Domino 9.0 Social Edition OpenSocial Component Deployment
IBM Domino 9.0 Social Edition OpenSocial Component DeploymentIBM Domino 9.0 Social Edition OpenSocial Component Deployment
IBM Domino 9.0 Social Edition OpenSocial Component DeploymentRahul A. Garg
 
What's new in ibm i notes 9.0
What's new in ibm i notes 9.0What's new in ibm i notes 9.0
What's new in ibm i notes 9.0Ranjit Rai
 
XPages Extension Library slides
XPages Extension Library   slidesXPages Extension Library   slides
XPages Extension Library slidesNiklas Heidloff
 
IBM i Technology Refreshes Overview 2012 06-04
IBM i Technology Refreshes Overview 2012 06-04IBM i Technology Refreshes Overview 2012 06-04
IBM i Technology Refreshes Overview 2012 06-04COMMON Europe
 
Trans Flow Product Presentation
Trans Flow   Product PresentationTrans Flow   Product Presentation
Trans Flow Product PresentationMayura Coodli
 
What's New in IBM iNotes 9.0 Social Edition & IBM Notes Browser Plugin
What's New in IBM iNotes 9.0 Social Edition & IBM Notes Browser PluginWhat's New in IBM iNotes 9.0 Social Edition & IBM Notes Browser Plugin
What's New in IBM iNotes 9.0 Social Edition & IBM Notes Browser PluginRahul A. Garg
 
Lotus Connections Administration - von der Befehlszeile zur grafischen Oberfl...
Lotus Connections Administration - von der Befehlszeile zur grafischen Oberfl...Lotus Connections Administration - von der Befehlszeile zur grafischen Oberfl...
Lotus Connections Administration - von der Befehlszeile zur grafischen Oberfl...TIMETOACT GROUP
 
Java on z overview 20161107
Java on z overview 20161107Java on z overview 20161107
Java on z overview 20161107Marcel Mitran
 

Tendances (18)

IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
IBM Lotusphere 2012 AD205 - IBM Sametime® in IBM Connections®, IBM WebSphere®...
 
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
Connect 2014 AD209 - Making Your Development Team More Productive With IBM Do...
 
Soccnx III - Using Social Controls in XPages
Soccnx III - Using Social Controls in XPagesSoccnx III - Using Social Controls in XPages
Soccnx III - Using Social Controls in XPages
 
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...
 
AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...
AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...
AD111 - The X Path: Practical guide to taking your IBM Lotus Notes applicatio...
 
Id101 what's new in ibm lotus® domino® 8.5.3 and beyond final
Id101 what's new in ibm lotus® domino® 8.5.3 and beyond finalId101 what's new in ibm lotus® domino® 8.5.3 and beyond final
Id101 what's new in ibm lotus® domino® 8.5.3 and beyond final
 
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1What’s new for Developers in IBM Domino & Domino Designer 9.0.1
What’s new for Developers in IBM Domino & Domino Designer 9.0.1
 
X pages jumpstart jmp101
X pages jumpstart jmp101X pages jumpstart jmp101
X pages jumpstart jmp101
 
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
2012 04-06-v2-tdp-1163-java e-evsspringshootout-final
 
Soccnx III - IBM Connections 3.0.1 Integration with Sametime
Soccnx III  - IBM Connections 3.0.1 Integration with SametimeSoccnx III  - IBM Connections 3.0.1 Integration with Sametime
Soccnx III - IBM Connections 3.0.1 Integration with Sametime
 
IBM Domino 9.0 Social Edition OpenSocial Component Deployment
IBM Domino 9.0 Social Edition OpenSocial Component DeploymentIBM Domino 9.0 Social Edition OpenSocial Component Deployment
IBM Domino 9.0 Social Edition OpenSocial Component Deployment
 
What's new in ibm i notes 9.0
What's new in ibm i notes 9.0What's new in ibm i notes 9.0
What's new in ibm i notes 9.0
 
XPages Extension Library slides
XPages Extension Library   slidesXPages Extension Library   slides
XPages Extension Library slides
 
IBM i Technology Refreshes Overview 2012 06-04
IBM i Technology Refreshes Overview 2012 06-04IBM i Technology Refreshes Overview 2012 06-04
IBM i Technology Refreshes Overview 2012 06-04
 
Trans Flow Product Presentation
Trans Flow   Product PresentationTrans Flow   Product Presentation
Trans Flow Product Presentation
 
What's New in IBM iNotes 9.0 Social Edition & IBM Notes Browser Plugin
What's New in IBM iNotes 9.0 Social Edition & IBM Notes Browser PluginWhat's New in IBM iNotes 9.0 Social Edition & IBM Notes Browser Plugin
What's New in IBM iNotes 9.0 Social Edition & IBM Notes Browser Plugin
 
Lotus Connections Administration - von der Befehlszeile zur grafischen Oberfl...
Lotus Connections Administration - von der Befehlszeile zur grafischen Oberfl...Lotus Connections Administration - von der Befehlszeile zur grafischen Oberfl...
Lotus Connections Administration - von der Befehlszeile zur grafischen Oberfl...
 
Java on z overview 20161107
Java on z overview 20161107Java on z overview 20161107
Java on z overview 20161107
 

Similaire à We4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshell

We4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application developmentWe4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application developmentWe4IT Group
 
Developing XPages Applications
Developing XPages ApplicationsDeveloping XPages Applications
Developing XPages ApplicationsNiklas Heidloff
 
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!ddrschiw
 
Domino OSGi Development
Domino OSGi DevelopmentDomino OSGi Development
Domino OSGi DevelopmentPaul Fiore
 
BP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM DominoBP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM DominoSerdar Basegmez
 
AD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development FuturesAD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development FuturesEamon Muldoon
 
Lessons learned from the worlds largest XPage project
Lessons learned from the worlds largest XPage projectLessons learned from the worlds largest XPage project
Lessons learned from the worlds largest XPage projectMark Roden
 
Domino X Pages
Domino X PagesDomino X Pages
Domino X Pagesddrschiw
 
SemeruRuntimesUnderTheCover .pptx
SemeruRuntimesUnderTheCover .pptxSemeruRuntimesUnderTheCover .pptx
SemeruRuntimesUnderTheCover .pptxSumanMitra22
 
Domino X Pages 8.5
Domino X Pages 8.5Domino X Pages 8.5
Domino X Pages 8.5John Head
 
Ad106 - XPages Just Keep Getting Better
Ad106 - XPages Just Keep Getting BetterAd106 - XPages Just Keep Getting Better
Ad106 - XPages Just Keep Getting Betterddrschiw
 
XPages: No Experience Needed
XPages: No Experience NeededXPages: No Experience Needed
XPages: No Experience NeededKathy Brown
 
Show110 | Using the XPages Extension Library for the Real World
Show110 | Using the XPages Extension Library for the Real WorldShow110 | Using the XPages Extension Library for the Real World
Show110 | Using the XPages Extension Library for the Real Worldpdhannan
 
Id111 - IBM Notes Browser Plug-in at Connect 2014
Id111 - IBM Notes Browser Plug-in at Connect 2014Id111 - IBM Notes Browser Plug-in at Connect 2014
Id111 - IBM Notes Browser Plug-in at Connect 2014rajeshpatil
 
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...IBM Systems UKI
 
JMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages ScalabilityJMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages ScalabilityTony McGuckin
 
Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A GlanceStefan Christoph
 
Zend Products and PHP for IBMi
Zend Products and PHP for IBMi  Zend Products and PHP for IBMi
Zend Products and PHP for IBMi Shlomo Vanunu
 
Connect 2014 SHOW102: XPages Still No Experience Necessary
Connect 2014 SHOW102: XPages Still No Experience NecessaryConnect 2014 SHOW102: XPages Still No Experience Necessary
Connect 2014 SHOW102: XPages Still No Experience Necessarypanagenda
 
What is Google App Engine?
What is Google App Engine?What is Google App Engine?
What is Google App Engine?weschwee
 

Similaire à We4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshell (20)

We4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application developmentWe4IT lcty 2013 - infra-man - whats new in ibm domino application development
We4IT lcty 2013 - infra-man - whats new in ibm domino application development
 
Developing XPages Applications
Developing XPages ApplicationsDeveloping XPages Applications
Developing XPages Applications
 
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
 
Domino OSGi Development
Domino OSGi DevelopmentDomino OSGi Development
Domino OSGi Development
 
BP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM DominoBP207 - Meet the Java Application Server You Already Own – IBM Domino
BP207 - Meet the Java Application Server You Already Own – IBM Domino
 
AD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development FuturesAD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development Futures
 
Lessons learned from the worlds largest XPage project
Lessons learned from the worlds largest XPage projectLessons learned from the worlds largest XPage project
Lessons learned from the worlds largest XPage project
 
Domino X Pages
Domino X PagesDomino X Pages
Domino X Pages
 
SemeruRuntimesUnderTheCover .pptx
SemeruRuntimesUnderTheCover .pptxSemeruRuntimesUnderTheCover .pptx
SemeruRuntimesUnderTheCover .pptx
 
Domino X Pages 8.5
Domino X Pages 8.5Domino X Pages 8.5
Domino X Pages 8.5
 
Ad106 - XPages Just Keep Getting Better
Ad106 - XPages Just Keep Getting BetterAd106 - XPages Just Keep Getting Better
Ad106 - XPages Just Keep Getting Better
 
XPages: No Experience Needed
XPages: No Experience NeededXPages: No Experience Needed
XPages: No Experience Needed
 
Show110 | Using the XPages Extension Library for the Real World
Show110 | Using the XPages Extension Library for the Real WorldShow110 | Using the XPages Extension Library for the Real World
Show110 | Using the XPages Extension Library for the Real World
 
Id111 - IBM Notes Browser Plug-in at Connect 2014
Id111 - IBM Notes Browser Plug-in at Connect 2014Id111 - IBM Notes Browser Plug-in at Connect 2014
Id111 - IBM Notes Browser Plug-in at Connect 2014
 
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
Pure Systems Patterns of Expertise - John Kaemmerer and Gerry Kovan, 11th Sep...
 
JMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages ScalabilityJMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages Scalability
 
Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A Glance
 
Zend Products and PHP for IBMi
Zend Products and PHP for IBMi  Zend Products and PHP for IBMi
Zend Products and PHP for IBMi
 
Connect 2014 SHOW102: XPages Still No Experience Necessary
Connect 2014 SHOW102: XPages Still No Experience NecessaryConnect 2014 SHOW102: XPages Still No Experience Necessary
Connect 2014 SHOW102: XPages Still No Experience Necessary
 
What is Google App Engine?
What is Google App Engine?What is Google App Engine?
What is Google App Engine?
 

Plus de We4IT Group

Aveedo - Der schnellste Weg zur Modernisierung von Notes Anwendungen (SNoUG 2...
Aveedo - Der schnellste Weg zur Modernisierung von Notes Anwendungen (SNoUG 2...Aveedo - Der schnellste Weg zur Modernisierung von Notes Anwendungen (SNoUG 2...
Aveedo - Der schnellste Weg zur Modernisierung von Notes Anwendungen (SNoUG 2...We4IT Group
 
cloud oder nicht-cloud - strategien für sonnenschein am it-himmel
cloud oder nicht-cloud - strategien für sonnenschein am it-himmelcloud oder nicht-cloud - strategien für sonnenschein am it-himmel
cloud oder nicht-cloud - strategien für sonnenschein am it-himmelWe4IT Group
 
Arbeitsplatz der Zukunft - We4IT Collaboration Cloud
Arbeitsplatz der Zukunft - We4IT Collaboration CloudArbeitsplatz der Zukunft - We4IT Collaboration Cloud
Arbeitsplatz der Zukunft - We4IT Collaboration CloudWe4IT Group
 
We4IT Mobile Solutions doclinkr and Aveedo - BLUG/Engage Mobile Conference 2013
We4IT Mobile Solutions doclinkr and Aveedo - BLUG/Engage Mobile Conference 2013We4IT Mobile Solutions doclinkr and Aveedo - BLUG/Engage Mobile Conference 2013
We4IT Mobile Solutions doclinkr and Aveedo - BLUG/Engage Mobile Conference 2013We4IT Group
 
We4IT - IBM Notes & Domino 9 Social Edition
We4IT - IBM Notes & Domino 9 Social EditionWe4IT - IBM Notes & Domino 9 Social Edition
We4IT - IBM Notes & Domino 9 Social EditionWe4IT Group
 
We4IT LCTY 2013 - Social Girl - Social Communications Strategy and the IBM Sa...
We4IT LCTY 2013 - Social Girl - Social Communications Strategy and the IBM Sa...We4IT LCTY 2013 - Social Girl - Social Communications Strategy and the IBM Sa...
We4IT LCTY 2013 - Social Girl - Social Communications Strategy and the IBM Sa...We4IT Group
 
We4IT LCTY 2013 - Infra-Man - Deep Dive into IBM Sametime - Advanced Video Te...
We4IT LCTY 2013 - Infra-Man - Deep Dive into IBM Sametime - Advanced Video Te...We4IT LCTY 2013 - Infra-Man - Deep Dive into IBM Sametime - Advanced Video Te...
We4IT LCTY 2013 - Infra-Man - Deep Dive into IBM Sametime - Advanced Video Te...We4IT Group
 
We4IT LCTY 2013 - Captain Mobility - INV102 Mobile Strategy
We4IT LCTY 2013 - Captain Mobility - INV102 Mobile StrategyWe4IT LCTY 2013 - Captain Mobility - INV102 Mobile Strategy
We4IT LCTY 2013 - Captain Mobility - INV102 Mobile StrategyWe4IT Group
 
We4IT LCTY 2013 - captain mobility - delivering your existing ibm domino appl...
We4IT LCTY 2013 - captain mobility - delivering your existing ibm domino appl...We4IT LCTY 2013 - captain mobility - delivering your existing ibm domino appl...
We4IT LCTY 2013 - captain mobility - delivering your existing ibm domino appl...We4IT Group
 
We4IT LCTY 2013 - social girl - enterprise 2.0
We4IT LCTY 2013 - social girl - enterprise 2.0We4IT LCTY 2013 - social girl - enterprise 2.0
We4IT LCTY 2013 - social girl - enterprise 2.0We4IT Group
 
We4IT LCTY 2013 - captain mobility - whats new ibm notes traveler and mobile ...
We4IT LCTY 2013 - captain mobility - whats new ibm notes traveler and mobile ...We4IT LCTY 2013 - captain mobility - whats new ibm notes traveler and mobile ...
We4IT LCTY 2013 - captain mobility - whats new ibm notes traveler and mobile ...We4IT Group
 
We4IT LCTY 2013 - x-pages-men - whats next - application modernization roadmap
We4IT LCTY 2013 - x-pages-men - whats next - application modernization roadmapWe4IT LCTY 2013 - x-pages-men - whats next - application modernization roadmap
We4IT LCTY 2013 - x-pages-men - whats next - application modernization roadmapWe4IT Group
 
We4IT lcty 2013 - social girl - social networks und -activitystreams
We4IT lcty 2013 - social girl - social networks und -activitystreamsWe4IT lcty 2013 - social girl - social networks und -activitystreams
We4IT lcty 2013 - social girl - social networks und -activitystreamsWe4IT Group
 
We4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worstWe4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worstWe4IT Group
 
We4IT lcty 2013 - keynote - ibm messaging & collaboration roadmap 2013
We4IT lcty 2013 - keynote - ibm messaging & collaboration roadmap 2013We4IT lcty 2013 - keynote - ibm messaging & collaboration roadmap 2013
We4IT lcty 2013 - keynote - ibm messaging & collaboration roadmap 2013We4IT Group
 
We4IT lcty 2013 - infra-man - domino run faster
We4IT lcty 2013 - infra-man - domino run faster We4IT lcty 2013 - infra-man - domino run faster
We4IT lcty 2013 - infra-man - domino run faster We4IT Group
 
We4IT lcty 2013 - captain mobility - mobile domino applications offline capab...
We4IT lcty 2013 - captain mobility - mobile domino applications offline capab...We4IT lcty 2013 - captain mobility - mobile domino applications offline capab...
We4IT lcty 2013 - captain mobility - mobile domino applications offline capab...We4IT Group
 
We4IT lcty 2013 - captain mobility - das dropbox prinzip
We4IT lcty 2013 - captain mobility - das dropbox prinzipWe4IT lcty 2013 - captain mobility - das dropbox prinzip
We4IT lcty 2013 - captain mobility - das dropbox prinzipWe4IT Group
 
We4IT Präsentation - doclinkr
We4IT Präsentation - doclinkrWe4IT Präsentation - doclinkr
We4IT Präsentation - doclinkrWe4IT Group
 
We4IT Flyer - groupcalendar plus
We4IT Flyer - groupcalendar plusWe4IT Flyer - groupcalendar plus
We4IT Flyer - groupcalendar plusWe4IT Group
 

Plus de We4IT Group (20)

Aveedo - Der schnellste Weg zur Modernisierung von Notes Anwendungen (SNoUG 2...
Aveedo - Der schnellste Weg zur Modernisierung von Notes Anwendungen (SNoUG 2...Aveedo - Der schnellste Weg zur Modernisierung von Notes Anwendungen (SNoUG 2...
Aveedo - Der schnellste Weg zur Modernisierung von Notes Anwendungen (SNoUG 2...
 
cloud oder nicht-cloud - strategien für sonnenschein am it-himmel
cloud oder nicht-cloud - strategien für sonnenschein am it-himmelcloud oder nicht-cloud - strategien für sonnenschein am it-himmel
cloud oder nicht-cloud - strategien für sonnenschein am it-himmel
 
Arbeitsplatz der Zukunft - We4IT Collaboration Cloud
Arbeitsplatz der Zukunft - We4IT Collaboration CloudArbeitsplatz der Zukunft - We4IT Collaboration Cloud
Arbeitsplatz der Zukunft - We4IT Collaboration Cloud
 
We4IT Mobile Solutions doclinkr and Aveedo - BLUG/Engage Mobile Conference 2013
We4IT Mobile Solutions doclinkr and Aveedo - BLUG/Engage Mobile Conference 2013We4IT Mobile Solutions doclinkr and Aveedo - BLUG/Engage Mobile Conference 2013
We4IT Mobile Solutions doclinkr and Aveedo - BLUG/Engage Mobile Conference 2013
 
We4IT - IBM Notes & Domino 9 Social Edition
We4IT - IBM Notes & Domino 9 Social EditionWe4IT - IBM Notes & Domino 9 Social Edition
We4IT - IBM Notes & Domino 9 Social Edition
 
We4IT LCTY 2013 - Social Girl - Social Communications Strategy and the IBM Sa...
We4IT LCTY 2013 - Social Girl - Social Communications Strategy and the IBM Sa...We4IT LCTY 2013 - Social Girl - Social Communications Strategy and the IBM Sa...
We4IT LCTY 2013 - Social Girl - Social Communications Strategy and the IBM Sa...
 
We4IT LCTY 2013 - Infra-Man - Deep Dive into IBM Sametime - Advanced Video Te...
We4IT LCTY 2013 - Infra-Man - Deep Dive into IBM Sametime - Advanced Video Te...We4IT LCTY 2013 - Infra-Man - Deep Dive into IBM Sametime - Advanced Video Te...
We4IT LCTY 2013 - Infra-Man - Deep Dive into IBM Sametime - Advanced Video Te...
 
We4IT LCTY 2013 - Captain Mobility - INV102 Mobile Strategy
We4IT LCTY 2013 - Captain Mobility - INV102 Mobile StrategyWe4IT LCTY 2013 - Captain Mobility - INV102 Mobile Strategy
We4IT LCTY 2013 - Captain Mobility - INV102 Mobile Strategy
 
We4IT LCTY 2013 - captain mobility - delivering your existing ibm domino appl...
We4IT LCTY 2013 - captain mobility - delivering your existing ibm domino appl...We4IT LCTY 2013 - captain mobility - delivering your existing ibm domino appl...
We4IT LCTY 2013 - captain mobility - delivering your existing ibm domino appl...
 
We4IT LCTY 2013 - social girl - enterprise 2.0
We4IT LCTY 2013 - social girl - enterprise 2.0We4IT LCTY 2013 - social girl - enterprise 2.0
We4IT LCTY 2013 - social girl - enterprise 2.0
 
We4IT LCTY 2013 - captain mobility - whats new ibm notes traveler and mobile ...
We4IT LCTY 2013 - captain mobility - whats new ibm notes traveler and mobile ...We4IT LCTY 2013 - captain mobility - whats new ibm notes traveler and mobile ...
We4IT LCTY 2013 - captain mobility - whats new ibm notes traveler and mobile ...
 
We4IT LCTY 2013 - x-pages-men - whats next - application modernization roadmap
We4IT LCTY 2013 - x-pages-men - whats next - application modernization roadmapWe4IT LCTY 2013 - x-pages-men - whats next - application modernization roadmap
We4IT LCTY 2013 - x-pages-men - whats next - application modernization roadmap
 
We4IT lcty 2013 - social girl - social networks und -activitystreams
We4IT lcty 2013 - social girl - social networks und -activitystreamsWe4IT lcty 2013 - social girl - social networks und -activitystreams
We4IT lcty 2013 - social girl - social networks und -activitystreams
 
We4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worstWe4IT lcty 2013 - keynote - worst practices - the best of the worst
We4IT lcty 2013 - keynote - worst practices - the best of the worst
 
We4IT lcty 2013 - keynote - ibm messaging & collaboration roadmap 2013
We4IT lcty 2013 - keynote - ibm messaging & collaboration roadmap 2013We4IT lcty 2013 - keynote - ibm messaging & collaboration roadmap 2013
We4IT lcty 2013 - keynote - ibm messaging & collaboration roadmap 2013
 
We4IT lcty 2013 - infra-man - domino run faster
We4IT lcty 2013 - infra-man - domino run faster We4IT lcty 2013 - infra-man - domino run faster
We4IT lcty 2013 - infra-man - domino run faster
 
We4IT lcty 2013 - captain mobility - mobile domino applications offline capab...
We4IT lcty 2013 - captain mobility - mobile domino applications offline capab...We4IT lcty 2013 - captain mobility - mobile domino applications offline capab...
We4IT lcty 2013 - captain mobility - mobile domino applications offline capab...
 
We4IT lcty 2013 - captain mobility - das dropbox prinzip
We4IT lcty 2013 - captain mobility - das dropbox prinzipWe4IT lcty 2013 - captain mobility - das dropbox prinzip
We4IT lcty 2013 - captain mobility - das dropbox prinzip
 
We4IT Präsentation - doclinkr
We4IT Präsentation - doclinkrWe4IT Präsentation - doclinkr
We4IT Präsentation - doclinkr
 
We4IT Flyer - groupcalendar plus
We4IT Flyer - groupcalendar plusWe4IT Flyer - groupcalendar plus
We4IT Flyer - groupcalendar plus
 

We4IT LCTY 2013 - x-pages-men - ibm domino xpages - performance in a nutshell

  • 1. AD208 IBM Domino® XPages Performance in a Nutshell Originally presented by: Maire Kehoe | Advisory Software Engineer Tony McGuckin | Software Engineer Presented today by: Matthew Fyleman | Product / Project Manager - We4IT © 2013 IBM Corporation
  • 2. Please note: IBM’s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM’s sole discretion. Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features or functionality described for our products remains at our sole discretion. Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the user's job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here. 2 © 2013 IBM Corporation
  • 3. Welcome and Introductions  Maire Kehoe ─ Advisory Software Engineer: IBM Ireland – IBM Lotus® Domino XPages – IBM Lotus® Component Designer 6.0 – XPages Runtime SME, XPages TeamRoom, ExtLib – Joined IBM 2003  Author ─ XPages Portable Command Guide 3 © 2013 IBM Corporation
  • 4. Welcome and Introductions  Tony McGuckin ─ Senior Software Engineer: IBM Ireland – XPages Runtime SME – Product & Application Template Development – Customer Enablement & Proof-of-Concept Development – Co-creator of global XPages@... Workshops – Lotus OneUI Adoption Workgroup  Author ─ Mastering XPages ─ XPages Portable Command Guide 4 © 2013 IBM Corporation
  • 5. Outline  XPages Architecture & Overview of a request ─ Environment – Domino HTTP server, OSGi plugins, loading NSF design elements ─ JSF & XPages control tree & lifecycle ─ Backend calls to get data sets  The Tools ─ for finding and understanding performance problems  AppDev choices ─ Most problems we're seeing in production applications are AppDev issues – in the Application Development and the XPage design  Configuration options ─ And discuss the different types of performance issues they solve  Shared Design & XPiNC considerations ─ Sharing design between applications, and XPiNC being XPages in the Notes® Client 5 © 2013 IBM Corporation
  • 6. XPages Architecture & Overview of an XPage request 6 © 2013 IBM Corporation
  • 7. What is XPages? The Notes/Domino App Dev Solution for Modern Web Applications  Standards-based Web 2.0 rapid application development framework ─ Uses JavaServer Faces (JSF)/JavaScript on server side ─ Uses HTML/JavaScript/Dojo(TM) on the client side  Java and OSGi-based runtime ─ fully integrated into Domino server, Notes client, IBM XWork server  Component-based portable development model (write-once-run-anywhere)  Set of design elements in Domino Designer  Provides built-in Domino data sources ─ Out-of-the-box data sources for binding to Domino views and documents ─ Efficiently manages hierarchies of documents, seamlessly handles data model changes  Highly extensible and customizable ─ Enables customers/business partners to build their own components, controls, data sources etc ─ e.g. XPages Social Enabler, XPages RBMS integration 7 © 2013 IBM Corporation
  • 8. What is an XPage?  A Domino design element, just like the traditional form or view  A page of XML tags known as XSP markup  Can be an aggregation of other mini-XSP files known as Custom Controls  Each XSP tag represents a design artifact … e.g. controls ─ UI Control: like a simple button, link, or as complex as a calendar ─ Data Source: a mechanism that fetches data from a particular source for display in a control ─ Event Handler: custom logic that “handles” events on a page, typically done in JavaScript ─ Simple Action: a high level piece of executable logic, like Open a Page, Save a Document 8 © 2013 IBM Corporation
  • 9. What is an XPage? XSP/JSF Hierarchy of XSP Markup – XML + HTML Components HTML in a browser 9 © 2013 IBM Corporation
  • 10. XPages Architecture Client Request Domino HTTP Server XPages Servlet Engine 2.4 servlet engine Virtual J2EE modules No WAR deployment required The server directly reads the design elements from the NSF database NSF database containing the design elements & the data 10 © 2013 IBM Corporation
  • 11. XPages Architecture – 8.5.2++ NSF Applications NSF Applications XPages Extensions XPages Extensions OSGi bundles OSGi bundles XPD Profile XPages XPD Profile XPages Runtime +Web Runtime Container OSGi Runtime OSGi Runtime Domino HTTP Task Notes Client Process Domino Server Notes Client The XPages runtime is deployed as a set of OSGi bundles (plugins/jars) Extensions: within an NSF Application, or as separate XPages Extension bundles ─ XPages Open Source Libraries [ExtLib] (8.5.3UP1 | OpenNTF.org) (likely in N/D Next) ─ XPages Experimental Extensions [ExtLibX] (OpenNTF.org) (not in N/D) ─ 3rd party XPages extensions & use of 3rd party plugins (Apache, JDBC etc.) 11 © 2013 IBM Corporation
  • 12. XPages extends JavaServer Faces Framework (JSF 1.1) The XPages Request Processing Lifecycle Phases  1. Restore View – Retrieves the JSF view for the request  2. Apply Request Values – Updates the JSF components to update their state based on values from the current request  3. Process Validations – Convertors and/or Validators invoked  4. Update model values – Application data is updated with new values. Values are written to the Domino back-end document during this phase.  5. Invoke applications – Application logic executed  6. Render response – Generates the response and saves the state of the view 12 © 2013 IBM Corporation
  • 13. XPages extends JavaServer Faces Framework (JSF 1.1) http://www.ibm.com/developerworks/java/library/j-jsf2/ 13 © 2013 IBM Corporation
  • 14. A Request 14 © 2013 IBM Corporation
  • 15. Tools for performance 15 © 2013 IBM Corporation
  • 16. XPages Toolbox v1.2  XPages based Application ─ Runs on the Domino server or the Notes client ─ An NSF needs to be installed on the Domino server/Notes client ─ A profiler jar file should be added to the JVM launch options  Measures the CPU performance and the memory allocation  Published on OpenNTF.org ─ Open source project ─ http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=XPages %20Toolbox  Extended in 8.5.2 to support Backend classes profiling 16 © 2013 IBM Corporation
  • 17. XPages Toolbox v1.2 CPU Profiler Memory Profiler 17 © 2013 IBM Corporation
  • 18. Heap Dumps - XPages Toolbox v1.2  Generate a heap dump of the JVM running in the HTTP task ─ A button in the XPages profiler generates the heap dump ─ A command from the Domino console [added 8.5.3] – tell http xsp heapdump (triggers com.ibm.jvm.Dump.HeapDump()) – tell http xsp javadump (triggers com.ibm.jvm.Dump.JavaDump())  Analyze the heap dump using the Eclipse Memory Analyzer ─ http://www.eclipse.org/mat/ ─ and the related extension for IBM JVMs: IBM Diagnostic Tool Framework for Java Version 1.10 extension  Heap dumps occur in production ─ when XPage(s) fail due to a java.lang.OutOfMemoryError 18 © 2013 IBM Corporation
  • 19. More Tools  Print statements ─ In rendered/visible computations to see how often executed – print("panel2 evaluating rendered property"); ─ In the XPages root control events: before/afterPageLoad, afterRestoreView, before/afterRenderResponse. Custom control root events: before/afterPageLoad. ─ In the document data source events: queryNewDocument, postSaveDocument, etc. – “post” means after, “query” means before and return true/false to do New/Open/Save  Task Manager and/or Process Explorer ─ Shows CPU usage & process memory usage as it happens ─ Heap memory usage will be a subset of process memory, but heap dumps are only a snapshot  Browser developer tools ─ for watching network transactions, partial updates, response times ─ Firefox(TM) – Firebug add-on. Internet Explorer(TM) – menu Tools, Developer Tools. ─ XPiNC – equivalent to Firefox 3.6.1, also in xsp.properties, find and enable: isDebug:true  Java Debugging ─ Degrades performance but can inspect objects, step into code. Use the Eclipse Java debugger. ─ In Dominonotes.ini add these 2 options: JavaEnableDebug=1 ─ JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000 19 © 2013 IBM Corporation
  • 20. AppDev Choices for performance 20 © 2013 IBM Corporation
  • 21. AppDev XPage design optimizations  Open Page simple action vs links or button with window.location JS  Reducing server phase processing ─ Use partial update where possible ─ Use partial execute where possible ─ Use disableValidators & immediate event  Minimizing work in rendered / visible computations  Repeats & views ─ Using viewEntry.getColumnValue instead of viewEntry.getDocument.getColumn ─ Use Domino View data source dataCache property where possible & scope property  Load-time vs Runtime ─ Using loaded vs rendered and other load-time optimizations ─ ExtLib Dynamic Content – allows partial re-loading so more use of load-time optimizations  Loading resources in the browser ─ CSS & browser JS – extract to separate files. Minify & compress files ─ Images – use correct size & format. Use CSS Image Sprites as possible 21 © 2013 IBM Corporation
  • 22. Using GET requests - Links & browser location redirect  Instead of Open Page simple action, use links or Browser  Script to redirect: <xp:link text="Open" id="link1"> <xp:this.value><![CDATA[#{javascript: "/topicThread.xsp?documentId=" + rowData.getUniversalID() + "&action=editDocument"}]]></xp:this.value> </xp:link> <xp:button value="Edit" id="button1"> <xp:eventHandler event="onclick" submit="false"> <xp:this.script><![CDATA[window.location.href = "/topicThread.xsp?documentId=" + "#{javascript:rowData.getUniversalID()}" + "&action=editDocument"; ]]> </xp:this.script></xp:eventHandler> </xp:button> Pros:  Fewer browser round-trips, less server processing ─ Open Page simple action means a submit & lifecycle before redirect to the new page Cons:  Not always possible – e.g. if need Save Document before Open Page ─ Or any server-side action or script needs to execute before moving to the new page 22 © 2013 IBM Corporation
  • 23. Full lifecycle ─ Most phases of the lifecycle iterate through the server-side control tree 23 © 2013 IBM Corporation
  • 24. Partial Update ─ Partial Update reduces the last phase: refreshMode="partial" refreshId="panel2" 24 © 2013 IBM Corporation
  • 25. Partial Update Pros:  Reduced control processing in the render response phase ─ Means less work on the server - render response is the most intensive phase  Reduced network usage – smaller response from server.  Better browser experience ─ rest of the page is still visible while waiting for a response ─ inserting small sections into the page is much faster than reloading a full page. Cons:  Dependancy on computations outside of the partial update area ─ Other areas of the control tree are not processed, so any SSJS scripts in those other controls will not be run, so enabling Partial Update where it was previously full update may lead to functional problems where expected changes did not occur, or some state is out-of date.  Only one area may be partial updated by default ─ In browser JavaScript you can schedule later partial updates of related areas, but any concurrent requests will wait for exclusive access to the server-side control tree before processing on the server. 25 © 2013 IBM Corporation
  • 26. Partial Execution ─ Partial Exec reduces the 3 data processing phases: execMode="partial" execId="panel2" 26 © 2013 IBM Corporation
  • 27. Partial Execution Pros:  Reduced control processing in the 3 data-processing phases ─ Means less work on the server, faster response times Cons:  Dependancy on Edit Box values outside of the partial exec area ─ Submitted values from Edit Boxes and/or other input controls in other areas of the control tree are not processed, so any control values and document fields in those other areas will not be updated. Enabling Partial Exec where it was previously full execution may lead to functional problems where values are out-of date in the onclick script or in the redisplayed page.  onclick Event Handler must be in the partial exec area ─ The applyRequestValues phase prepares for the invokeApplication phase. The onclick simple action or SSJS script won't occur if outside the partial exec area  execMode only added in 8.5.1 (not in 8.5.0)  execId slightly difficult to select in Designer ─ Select your button, in the Outline view, toggle open the button, select the child Event Handler control, then set the execId property on the Event Handler. ─ [Better UI proposed in Notes/Domino Next – in the Events tab] 27 © 2013 IBM Corporation
  • 28. Both - Partial Update & Execution ─ Can combine partial update and partial execute: often exec and update the same area or exec a smaller area containing just the Event Handler or Event Handler and some inputs 28 © 2013 IBM Corporation
  • 29. disableValidators & immediate ─ For when you need a server-side action, but don't want the usual Data Processing disableValidators ─ 3 Data Processing Phases are same as usual, except each EditBox validator will do nothing ─ Converters are still applied, document fields are updated without validation Immediate ─ applyRequestValues phase is combined with invokeApplication phase. ─ No other Data processing phases. Document fields not updated. ─ Event Handler onclick scripts and renderResponse phase computed values will tend to see out-of-date values. To see up-to-date but not-converted values use: var editBox1 = getComponent('editBox1'); var value = editBox1.getSubmittedValue(); if( null == value ) value = editBox1.getValue(); 29 © 2013 IBM Corporation
  • 30. Minimizing work in rendered / visible computations  The rendered property is computed in all 5 lifecycle phases ─ Most properties, like CSS “style” are only computed in the renderResponse ─ Edit Box and input “value” properties are used in Data Processing phases & renderResponse ─ Data Source properties are computed during renderResponse & results are cached for the next request's Data Processing & invokeApplication phases  Avoid re-computing performance-heavy values in every rendered property ─ e.g. @DbLookup, @DbColumn, getDocumentByKey ─ In the rendered property, save the computed boolean to a viewScope variable if( !viewScope.computedDisplayPanel2 ){ // should compute viewScope.isDisplayPanel2 = @DbLookup(...).contains("unread"); viewScope.computedDisplayPanel2 = true; } return viewScope.isDisplayPanel2; ─ Subsequent re-computing of rendered will not enter the “if” statement, and will complete quickly ─ If the computation depends only on user session information, save to sessionScope ─ If the computation depends on a value in a comboBox, remove the viewScope boolean in the comboBox onchange event 30 © 2013 IBM Corporation
  • 31. Avoid viewEntry.getDocument() in large repeats  viewEntry.getDocument() is a non-trivial ─ The API viewEntry.getDocument() is a call to the backend classes ─ Avoid calling it frequently, similar to avoiding @DbLookup in the rendered property ─ It should only be used for very small data-sets ─ It can easily cause performance delays when called repeatedly in 100s of rows  Use viewEntry.getColumnValue instead. ─ If the value you need isn't an existing column value of the view, ─ Consider defining a new view that has all the column values you need  In general, avoid complicated or slow operations in repeats ─ Even relatively benign operations can cause problems when repeated frequently ─ If you need to save row-related values to a viewScope variable, use this rowId in the variable name: var rowId = getComponent("viewPanel1").getDataModel().getRowId(); ─ in Domino views it's the NoteID, but the API is designed to work with non-Domino rows too 31 © 2013 IBM Corporation
  • 32. dataCache = full or id  The Domino View data source by default saves all view entry column values ─ They are computed in the render response Phase, saved & restored between requests and reused in the subsequent request's Data Processing Phases and invokeApplication phase  Advantages: ─ to allow onclick events in repeat rows to use viewEntry.getColumnValue and still be reliable when rows have been deleted by other users between browser requests. ─ getColumnValue is useful with View Panel checkboxes for selected rows  Disadvantages: ─ For large data sets, it takes a lot of work to save and restore all the viewEntries ─ That may cause delays, and requests will wait longer before displaying in the browser ─ The viewEntries use a lot of memory, which may contribute to OutOfMemoryError failures ─ Not needed usually, except in the case mentioned.  Instead of saving all state use: <xp:dominoView dataCache="id" ... /> 32 © 2013 IBM Corporation
  • 33. Using loaded vs rendered and other load-time optimizations  Compute the loaded property on conditions ─ where you could compute the rendered property and save it to the view scope ─ it would never need to be recomputed for the rest of the interaction with this page ─ you don't need access to a repeat's rowData or viewEntry, or to any control's clientId: #{id:inputText1}  Loaded ─ is only computed once in the createView phase – not re-computed in the 5 usual phases ─ false means the control is not created. So it can never be rendered. ─ true means the control is added to the control tree. You can still compute rendered when loaded evaluates to true.  During the createView phase, things are different ─ Repeat controls do not repeat, so viewEntry objects are not available ─ ClientIds may evaluate to values that will change in subsequent requests ─ Scripts can't access controls in the control tree ─ When in repeat controls, Custom Control “compositeData” property values are unreliable  Same for “Compute On Page Load” vs “Compute Dynamically” computed values  before/afterPageLoad events are also during the createView phase 33 © 2013 IBM Corporation
  • 34. ExtLib Dynamic Content  Allows partial re-loading of part of an XPage in response to an event ─ so the loaded property is no longer restricted to calculations depending on values that are the same for the duration of this XPage ─ Allows more use of load-time optimizations ─ Still avoid re-evaluating during rendered evaluations ─ Loaded is only evaluated during the initial page load and during any events that trigger a reload of this section of the XPage  Also allows choosing between child/facet areas to load ─ Both at initial page load, and ─ Changing which child/facet area is loaded in response to an event  Other ExtLib controls are dynamic-enabled ─ ExtLib Tab Container control can load new tabs and content in response to an event ─ ExtLib Dialog control can load content just before the dialog is displayed, so not taking up memory on the server until needed.  The ExtLib set of controls are available ─ part of the released 8.5.3 UpgradePack1 ─ on OpenNTF.org – also has the ExtLibX controls (including the experimental JDBC support) ─ planned to be included in Notes/Domino Next (present in the public Beta) 34 © 2013 IBM Corporation
  • 35. Loading Resources in the browser  For better performance in the browser. ─ for your resources (CSS files, images and browser JavaScript files), you want ─ Fewer requests to the server ─ Smaller files retrieved from the server (less bandwidth)  Use the browser's cache where possible ─ use the same URLs to reference the same server files  Inline JavaScript in a web page executes inline ─ as the page is being displayed, blocking the display of the rest of the page to the user ─ Use XSP.addOnLoad blocks to defer execution of scripts until after the initial inline load  Browsers have limits on the number of concurrent network requests ─ Keeping it down to fewer files really matters 35 © 2013 IBM Corporation
  • 36. CSS & browser JS  Move inline CSS and browser JS to separate files ─ Extract CSS and browser JavaScript from inline in the HTML output to separate files (.css and .js), ─ to keep the HTML file size down ─ to allow browser caching of the CSS and JS files ─ Avoids repeating complicated CSS & JS snippets at multiple locations in the HTML  Minify & compress CSS and JS files. ─ There are Dojo Toolkit build tools to minify. ─ In CSS files, removes whitespace and comments. ─ In JavaScript files, minify will also rename variables to shorter names. ─ Save zipped/compressed .gz copies of server-wide .css and .js files ─ the Domino HTTP server will serve the smaller .gz files to most browsers (older browsers don't support the feature)  Since 8.5.3, use the XPages aggregate option in the Application Properties ─ Appends CSS files together, for server-wide files, and separately for application-specific files ─ Is aware of Dojo Modules, so can aggregate JS files that refer to other Dojo module .js files, and XPage Dojo Module resource references that would appear in the HTML <head> tag. 36 © 2013 IBM Corporation
  • 37. Images  Use correct file type depending on content ─ JPEG for complexed detailed images ─ PNG/GIF for simple images, fonts, transparencies  Use the HTML <img tag “width” and “height” attributes ─ For faster HTML layout in the browser  Size the image to size you intend to use ─ Resizing using html attributes height and width will delay the rendering of your page ─ Images larger than necessary will waste bandwidth  Use CSS Image Sprites ─ If you have multiple small images, make a single larger image containing the smaller images ─ And use CSS to display just the relevant subset image at a <SPAN location in the page ─ For semantically significant sprites, provide an accessibility “title” attribute (as sprites don't use the IMG “alt” attribute, but you still want to assist blind users) ─ There's no specific XPages support for sprites, but they're used in the XPages OneIU themes 37 © 2013 IBM Corporation
  • 38. Configuration Options 38 © 2013 IBM Corporation
  • 39. Configuration Options - General Performance options notes.ini  HTTPJVMMaxHeapSizeSet=1  HTTPJVMMaxHeapSize=256M ─ The JavaTM memory allocation for the HTTP task ─ For servers using XPages use 256MB on 32bit machines, 1024MB on 64bit machines.  JavaEnableDebug=1  JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000  JavascriptEnableDebug=1 (in Notes/Domino Next) ─ Debug has a performance degradation  XPagesPreload=1  XPagesPreloadDB=teamdisc.nsf/ByAuthor.xsp ─ Will be covered in the XPiNC section, though also applies to the server Domino Administrator  HTTP server "Enable logging to" disabled  HTTP server thread count – defaults to 40. 39 © 2013 IBM Corporation
  • 40. Configuration Options - xsp.properties Documented in Dominodatapropertiesxsp.properties.sample  xsp.persistence.mode ─ Relates to OutOfMemoryError and server-side control tree caching. Also the related options: ─ xsp.persistence.file.maxviews, xsp.persistence.file.gzip, xsp.persistence.file.threshold, xsp.persistence.dir.xspstate  xsp.application.timeout=30min  xsp.session.timeout=30min ─ Server timeouts  ibm.jscript.cachesize ─ Server-side JavaScript expression cache  xsp.resources.aggregate ─ Fewer requests for CSS and JS files, aggregated files are cached in server & browser  xsp.compress.mode=gzip ─ Network files are smaller (enabled by default)  xsp.expires.global=10days ─ Browser expiration for CSS & JS global files [global == not in application] 40 © 2013 IBM Corporation
  • 41. Shared Design + XPages in the Notes Client 41 © 2013 IBM Corporation
  • 42. Shared Design and some XPiNC issues & optimizations  Notes has the feature “Single copy template” ─ Enable in a template, causes applications that will inherit from this template to include pointers or reference notes to this template's design elements, rather than including copies of the design elements themselves. ─ Keeps the NSF file size down, XPages runtime memory size uneffected – still loads the design elements into memory again for each application that uses the design elements.  XPages has the feature “Single copy XPage design” ─ And the corresponding “XPage design store path”. Both added in 8.5.2. ─ Multiple applications point to a common nsf (not ntf) ─ Browser URLs will use the shared XPages css, images, browser JavaScript, giving browser caching. ─ XPages runtime server code will mostly share the same J2EE module – shared classloader, design elements loaded once, instead of per-application, etc. ─ App still behaves as a separate instance for: database object, applicationScope, sessionScope ─ Classic design elements (Views, Form, Agents...) are not shared ─ http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Single_Copy_XPage_Design 42 © 2013 IBM Corporation
  • 43. 43 © 2013 IBM Corporation
  • 44. Single copy XPage design discussion1.nsf .xsp .css & .gif User browser HTTP sharedDiscuss.nsf Server .css & .gif .xsp User browser discussion2.nsf 44 © 2013 IBM Corporation
  • 45. XPages Preload  Notes.ini option, new in 8.5.3 ─ XPagesPreload=1 ─ XPagesPreloadDB=myServer!!myDb.nsf/myXPage.xsp,myLocalDb.nsf/test.xsp  After restart, the first time an application is used, there's a delay ─ The first user to open an XPage in the application will have to wait while the OSGi plugins are loaded and the XPages runtime platform-wide settings are read, the XPage.class file is read from the NSF, etc.  Preload will load the XPages runtime OSGi plugins  PreloadDB will “fake” a request to the listed XPages ─ So that the initialization happens during the preload, just after startup, instead of during the first browser request for the application. ─ [It only loads the XPage itself, doesn't follow redirects or load CSS files, etc.]  Preload in XPiNC ─ The “!!” syntax is used in XPages in the Notes Client (XPiNC) for loading remote applications, as opposed to local applications / local replicas. ─ Preload is especially useful with XPiNC remote apps, because the delay of fetching Design Elements and class files across the network is much slower than the server delay of reading them from the server file system. ─ Admins can push the notes.ini setting out to all Notes clients 45 © 2013 IBM Corporation
  • 46. HTTP server Cold Start Request OSGi & XPages runtime time memory File System NSF class files & design elements memory File System NSF data memory File System Response 46 © 2013 IBM Corporation
  • 47. HTTP server Warm Start Request OSGi & XPages runtime time memory NSF class files & design elements memory NSF data memory File System Response 47 © 2013 IBM Corporation
  • 48. XPiNC optimizations  You can combine both “Single copy XPage design” and “XPagesPreload” ─ However there were some issues when combining them in XPiNC in the 8.5.3 GA release, fixed in 8.5.3FixPack3.  XPiNC issues waiting for network traffic ─ Network traffic can be grossly inflated by sub-optimal app design practices, e.g. – A computeWithForm prop on a Domino doc data source will pull the Form across the net – A Form element is arbitrarily large, e.g. includes all subforms and any other contained elements – each fetched individually. ─ Inefficient data access operations, e.g. – Opening documents on-the-fly within a data iterator / repeat control – Performing dynamic remote NSF lookups when computing “rendered” property values ─ Performance degrades even further on high latency networks ─ Worse case – There was a reported “perfect storm” app having 8minute delay on first opening in XPiNC – Optimize the application to reduce the usual AppDev issues (worse in XPiNC) down to 2min – Use XPagesPreload, no longer noticeable ─ There are proposed Notes/Domino Next options to improve the XPiNC behavior on slow networks for some scenarios 48 © 2013 IBM Corporation
  • 49. Local HTTP server XPiNC Cold Start XPiNC OSGi & XPages runtime browser Request time Local File memory System NSF class files & design elements Server File memory Network System NSF data Server File memory Network System Response 49 © 2013 IBM Corporation
  • 50. Ending & related 50 © 2013 IBM Corporation
  • 51. Before You Leave  Please complete your session survey  Session ID: AD208  Session Title: “IBM Domino XPages Performance in a Nutshell” 51 © 2013 IBM Corporation
  • 52. Q&A Contact Information: tony.mcguckin@ie.ibm.com 52 © 2013 IBM Corporation mkehoe@ie.ibm.com
  • 53. XPages Portable Command Guide – Book Signing – Wednesday – 2:30-3:30pm  Tuesday ─ 01-30pm AD206 IBM Lotus Domino XPages: Embrace, Extend, Integrate. N Heidloff, P Edwards ─ 03-30pm AD203 IBM Domino Designer: Tips and Tricks for Maximum Productivity. K Howard, D O'Connor  Wednesday ─ 01-30pm AD204 How To Develop Great Applications Using XPages Design Patterns. M Donnelley, T McGuckin ─ 03-00pm AD215 Let it Flow: XPages are Workflow's New Best Friend. Q Liang, S Wissel ─ 04-15pm AD205 Successfully Delivering XPages Projects - All Things Considered. M Donnelly, T McGuckin, P Edwards ─ 04-15pm AD202 Debug Server Side Javascript, Java, and XPages Apps Using the SSJS Debugger. M Blout, D O'Connor (Was Sunday) 08-00am JMP401 Master Class: XPages Performance - Inside Out. T McGuckin, M Kehoe 53 © 2013 IBM Corporation
  • 54. More Information  XPages.info – One Stop Shopping for XPages ─ http://xpages.info  XPages Forum – Got Questions, Need Answers? ─ http://xpages.info/forum  OpenNTF – Open Source Community ─ http://www.openntf.org  Domino Application Development Wiki ─ http://www.lotus.com/ldd/ddwiki.nsf  XPages Blog ─ http://xpagesblog.com  IBM Educational Offerings ─ http://www.ibm.com/software/lotus/training/n8deducationofferings.html 54 © 2013 IBM Corporation
  • 55. Technical Education & Certification  IBM Education XPages Courses Course Name Fundamentals of IBM Lotus Domino 8.5.1 Application Development Introduction to IBM Lotus Domino 8.5 XPages Developing IBM Lotus Domino 8.5.2 Applications: Intermediate XPage Design Developing IBM Lotus Domino 8.5.2 Applications: Advanced XPage Design (New 6/11) Modernizing Domino Applications (New 8/11)  Learning Roadmaps (New Developers) ─ New Developers ─ Experienced Developers  IBM Resells TLCC XPages Courses (and Other App Dev & Admin Courses)  New XPages Certification: Developing IBM Lotus Domino 8.5.2 Applications: Advanced XPage Design 55 © 2013 IBM Corporation
  • 56. Mastering XPages  Factoids... ─ Comprehensive 7 Part, 785 page volume ─ IBM Press publication ─ Authored by lead members of XPages development team ─ Features contributions from other key community members ─ Covers all aspects of XPages application development ─ Example-driven approach focusing on practical problems ─ Includes sample NSF downloads  Available now @ IBM Connect bookstore  Available online ─ www.ibmpressbooks.com/bookstore/product.asp?isbn=0132486482 ─ www.amazon.com/Mastering-XPages-Step-Step-Application/dp/0132486318 56 © 2013 IBM Corporation
  • 57. XPages Portable Command Guide  Factoids... ─ Compact 320 page volume ─ IBM Press publication ─ Authored by members of XPages & Domino Designer dev teams ─ Perfect complement to the popular Mastering XPages book, helping experienced XPages developers go even further ─ Thoroughly covers XSP properties, Command Manager instructions, INI variables, OSGi console commands, debugging, logging and more. ─ Dozens of practical examples providing immediate solutions  Available now @ IBM Connect bookstore  Available online: ─ www.ibmpressbooks.com/bookstore/product.asp?isbn=0132943050 ─ www.amazon.com/XPages-Portable-Command-Guide/dp/0132943050 57 © 2013 IBM Corporation
  • 58. XPages Extension Library  Factoids... ─ Comprehensive 600 page volume ─ IBM Press publication ─ Authored by a team of all-star XPages experts, Featuring contributions from key community members ─ Take full advantage of the XPages Extensibility Framework, Library & API ─ Step-by-step guide for developers of all experience levels ─ Combines reference material and practical use cases  Available now @ IBM Connect bookstore  Available online: ─ www.ibmpressbooks.com/bookstore/product.asp?isbn=0132901811 ─ www.amazon.com/XPages-Extension-Library/dp/0132901811 58 © 2013 IBM Corporation
  • 59. Legal disclaimer © IBM Corporation 2013. All Rights Reserved. The information contained in this publication is provided for informational purposes only. While efforts were made to verify the completeness and accuracy of the information contained in this publication, it is provided AS IS without warranty of any kind, express or implied. In addition, this information is based on IBM’s current product plans and strategy, which are subject to change by IBM without notice. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this publication or any other materials. Nothing contained in this publication is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in this presentation may change at any time at IBM’s sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the user's job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here. Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. 59 © 2013 IBM Corporation