FMW Tuning

49
2013 © Trivadis BASEL BERN LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN Integration Architecture Monitoring and Tuning Oracle Fusion Middleware and SOA Suite 11g Matthias Furrer und Daniel Joray TechEvent April 2013 April 2013 1 Monitoring and Tuning Fusion Middleware 11g

description

FMW Tuning.

Transcript of FMW Tuning

  • 2013 Trivadis

    BASEL BERN LAUSANNE ZRICH DSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MNCHEN STUTTGART WIEN

    Integration Architecture

    Monitoring and Tuning Oracle Fusion Middleware and SOA Suite 11g

    Matthias Furrer und Daniel Joray

    TechEvent April 2013

    April 2013

    1Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Introduction

    2

    Matthias Furrer Long-standing experience in SOA and ERP Area

    Architect, Consultant, Lead-Developer and Project Manager

    SOA Certified Professional

    Oracle SOA Blackbelt Consultant

    Trainer with Trivadis Oracle Middleware und SOA

    Reviewer of Technical Publications

    More than 20 years of software development experience

    Contact: [email protected]

    April 2013

    Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Agenda

    Part I: Monitoring Oracle Fusion Middleware 11g Manual Monitoring Automated Monitoring

    Part II: Tuning Oracle Fusion Middleware 11g SOA Suite Infrastructure SOA Suite Development OSB Infrastructure OSB Development

    3

    April 2013

    3Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Each WebLogic Server instance writes all messages from its subsystems and applications to a server log file that is located on the local host computer. The default location for server logs is DOMAIN_HOME\servers\SERVER_NAME\logs\SERVER_NAME.log

    Each server instance forwards a subset of its messages to a domain-wide log file. By default, only messages with a severity level of NOTICE or higher are forwarded. The default location for domain logs isDOMAIN_HOME\servers\ADMIN_SERVER_NAME\logs\DOMAIN_NAME.log

    The Node Manager writes start-up and status messages toFMW_HOME\common\nodemanger\nodemanager.log

    Manual MonitoringWebLogic Logging - Overview

    Detailed Information can be found in Oracle Configuring Log Files and Filtering Log Messages for Oracle WebLogic Server (E13739).

    April 2013

    4Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    In addition to writing messages to a log file, each server instance prints a subset of its messages to standard out. If not redirected, standard out is the shell (command prompt) in which the server instance is running.

    By default, a server instance prints only messages of a NOTICEseverity level or higher to standard out

    If Node Manager is used to start a Server, the messages that would otherwise be output to stdout or stderr when starting a Managed Server are instead displayed in the Administration Console and written to a single log file for that server instance, DOMAIN_HOME\servers\SERVER_NAME\logs\SERVER_NAME.out

    Log rotation cannot be set-up for the .out files, on UNIX systems operating system commands can be used for this.

    Manual MonitoringWebLogic Logging stdout and stderr

    April 2013

    5Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    In addition to the WebLogic log files, Oracle Fusion Middleware components write diagnostic log files in the Oracle Diagnostic Logging (ODL) format. Log file naming and the format of the contents of log files conforms to an Oracle standard and, by default, the diagnostic messages are written in text format.

    The default location for SOA Suite diagnostic logs is DOMAIN_NAME\servers\SERVER_NAME\logs\SERVER_NAME-diagnostic.log

    You can view log files using Fusion Middleware Control or the WLST displayLogs command, or you can download log files to your local client and view them using another tool

    Manual MonitoringFusion Middleware Logging - Overview

    April 2013

    6Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Manual MonitoringConfiguring FMW (Diagnostic) Log Files

    You can configure the server log file Fusion Middleware Control under the SOA Infrastructure -> Log Configuration Menu

    Typically you adjust settings about file names, rotation, file retention here after initial installation

    April 2013

    7Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Manual Monitoring Configuring FMW (Diagnostic) Log Files Log Levels

    There are two types of loggers: Persistent loggers and Runtime loggers

    Run-time loggers are loggers that are currently active. Changing the log level will not require a restart of the component.

    Persistent loggers are loggers that are saved in a configuration file and log levels of these loggers are persistent across component restarts.

    April 2013

    8Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    The purpose of Selective Tracing is to allow for finer grained control of logging, thereby limiting the information logged to only that which is needed.

    Selective Tracing allows for increasing the trace level in a domain for a specified subset of activity and for a specified duration in minutes.

    Tracing sessions can be started and stopped from either Fusion Middleware Control or WLST.

    Several of the Selective Tracing options are applicable to SOA and one, Composite Name, is specifically for SOA.

    Selective Tracing is of particular benefit when trying to troubleshoot production issues and the overhead of logging needs to be kept to a minimum.

    Manual MonitoringSelective Tracing

    April 2013

    9Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    You can configure Selective Tracing from the WebLogic Domain Menu under Logs -> Selective Tracing

    Manual MonitoringSelective Tracing - Configuration

    April 2013

    10Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Monitoring SOA Suite Infrastructure

    Many options are available to monitor SOA Suite Infrastructure, WebLogic resources and SOA Suite Components. Among these, there are :

    WebLogic Administration Console

    WebLogic Administration Console Monitoring Dashboard

    Dynamic Monitoring Services - DMS Spy Servlet

    .

    Manual MonitoringOverview available Utilities

    April 2013

    11Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Monitoring WebLogic Components and Resources

    Among others you can monitor the following in WebLogicAdministration Console:

    Administration and Managed Servers

    Subsystem Health (Applications and Adapters)

    JVM Performance

    Thread Activity

    Workload

    Security

    JMS (Java Message Service)

    JDBC Datasources

    JTA (Java Transaction API)

    Monitoring UtilitiesWebLogic Administration Console

    April 2013

    12Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Monitoring UtilitiesDynamic Monitoring Service (DMS)

    The Oracle Dynamic Monitoring Service (DMS) enables Oracle Fusion Middleware components to provide administration tools, such as Oracle Enterprise Manager, with data regarding the component's performance, state and on-going behaviour. Fusion Middleware Components push data to DMS and in turn DMS publishes that data through a range of different components..

    DMS Spy Servlet WLDF

    WLST JConsole (MBeans)

    April 2013

    13Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Monitoring UtilitiesDMS Spy Servlet

    The Monitoring Dashboard is available under the URL: http(s)://:/dms/Spy

    You can also monitor your DMS collected metrics here

    April 2013

    14Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Monitoring UtilitiesAdministration Console Monitoring Dashboard

    The Monitoring Dashboard provides views and tools for graphically presenting diagnostic data about servers and applications running on them. The underlying functionality for generating, retrieving, and persisting diagnostic data is provided by the WebLogic Diagnostics Framework. The Monitoring Dashboard provides additional tools for presenting that data in charts and graphs.

    Built-In Views

    Custom Views Metrics Browser

    Charts

    April 2013

    15Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Monitoring UtilitiesMonitoring Dashboard

    The Monitoring Dashboard is available under the URL: http(s)://:/console/dashboard

    You can create your own views using the metrics browser for your SOA Composites

    April 2013

    16Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automating Monitoring

    In order to automating monitoring of your infrastructure and SOA composites with agents or scripting, the options include :

    WebLogic Diagnostics Framework (WLDF)

    WebLogic ScriptingTool (WLST)

    Java Admin Utility

    SOA Management Packs

    Oracle Business Activity Monitoring (BAM)

    Automated MonitoringOverview

    April 2013

    17Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automated MonitoringWebLogic Diagnostic Framework (WLDF)

    The WebLogic Diagnostics Framework (WLDF) is a monitoring and diagnosticframework that defines and implements a set of services that run within WebLogic Server processes and participate in the standard server life cycle.

    Monitoring Dashboard Notifications

    Metrics

    SMTP, SNMP, JMXand JMS

    April 2013

    18Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automated Monitoring and AlertingWLDF Setting up Diagnostic Module

    Automated Monitoring and Alerting

    1. Creating a new Mail Session , which enables applications to access a pre-configured javax.mail.Session object through JNDI. The Mail Session can be used for the Notification. Other options include : SNMP, JMS

    2. Creating a new NotificationThe Notification will be triggered by the Watch.

    3. Use the Dashboard or the DMS Spy Servlet application to find the metrics and attributes that needs to be monitored

    4. Creating a new WatchThe Watch will use the defined DMS metrics to monitor system state in the Diagnostic Framework.

    April 2013

    19Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    In order to find the relevant metrics and associated attributes, the easiest way is to review the available metrics in the interactive applications:http://:/console/dashboardhttp://:/dms/Spy

    The following DMS metrics groups are good candidates to monitor runtime activity of SOA Suite composites:

    soainfra_component soainfra_mediator_flow soainfra_JCABinding soa_infra_bpel_requests soa_infra_bpel_activity

    The following DMS metrics groups are good candidates to monitor runtime activity of JVM: JRockit (MBean) weblogic.management.runtime.JRockitRuntimeMBean JVM JVM_GC JVM_ThreadStats

    Automated Monitoring and AlertingWLDF Use Dashboards to find Metrics and Attributes

    April 2013

    20Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automated MonitoringWLST

    Use can use WLST commands to view information about a specific performancemetric, a set of performance metrics, or all performance metrics for a particular server or component.

    DMS Metric Commands Server Status

    April 2013

    21Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automated MonitoringJava Admin Utility

    The weblogic.Admin utility can access the Administration Server as well as all active server instances directly. If the Administration Server is down, you can still use the weblogic.Admin utility to retrieve runtime information from Managed Servers and invoke administrative commands.

    Java Management Extensions (JMX) Usable from command line or Java Class

    while(mbeanIterator.hasNext()) {serverRuntime = (ServerRuntimeMBean)mbeanIterator.next();if(serverRuntime.getState().equals(ServerStates.RUNNING)){

    serverRuntime.shutdown();}

    April 2013

    22Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automated MonitoringJava Admin Utility Command Line

    While the Administration Console interacts only with the Administration Server, the weblogic.Admin utility can access the Administration Server as well as all active server instances directly..

    April 2013

    23Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automated MonitoringSOA Management Packs

    The Oracle SOA Management Pack Enterprise Edition delivers comprehensivemanagement capabilities for a Service-Oriented Architecture-based (SOA) environment.

    Centralized Management Console Infrastructure Management Configuration Management Deployment Automation

    Adapter Metrics

    Service Level Management Business Transaction Management

    April 2013

    24Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automated MonitoringSOA Management Packs

    Based on Cloud Control / Grid Control platform

    Not included in SOA Suite license

    WebLogic Management Packs also available

    Source: Oracle Corp.

    April 2013

    25Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automated MonitoringOracle Business Activity Monitoring (BAM)

    The primary focus of Oracle Business Activity Monitoring (BAM) is to monitor Business Transactions. However, due to its alerting capabilities it can also be used to monitor composite instances.

    Visualized dashboards of composite instances can be implemented

    Alerting when abnormal situations occur Deviation of expected results can be monitored

    JCA BAM-Adapters can be used in BPEL, BPM and Oracle Service Bus SOAP web service and JMS interface

    April 2013

    26Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Automated MonitoringOracle Business Activity Monitoring

    Integrated component of Oracle SOA Suite Included in SOA Suite license

    April 2013

    27Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    TuningTop Performance Areas

    To maximize the performance capabilities of the applications, performance and scalability must be considered in environment configuration and build into the design.

    It is required to continuously monitor and track specific performance issues within the application to understand where tuning can improve performance

    April 2013

    28

    Source: Oracle Corp.

    Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Configuration and TuningTop Performance Areas Environment

    To maximize Oracle Fusion Middleware performance, it is required to monitor, analyze, and tune all the components that are used by the applications.

    Hardware Resources

    Operating System

    Java Virtual Machine

    Repository Database

    WebLogic Server

    Database Connections and Datasource Configuration

    Service Engine Configuration

    Logging Levels

    April 2013

    29Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    ConfigurationEnvironment and Deployment Architecture Considerations

    Hardware Sufficient resources. Separate architectural components should be deployed into separate tiers the web servers,

    application servers and database should be installed in different tiers, since they require different tuning. If the WebCenter portal and content management components are being used, they should also be installed on different machines

    Clustering If it is believed that there might be a need for a clustered. configuration eventually, consider

    deploying into a cluster from day one, even if it is a cluster with only one node in it.

    Versions Using the current software versions ensures avoidance of any issues that are already addressed

    by patches that Oracle has released for issues encountered by other customers.

    Auditing and Logging Use diagnostic logs only with caution and in development environments Use Warning level and above in production environments Be aware that Nodemanager stdout/stderr logs are not rotated

    April 2013

    30Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    ConfigurationEnvironment and Deployment Architecture Considerations

    .ADF Applications Use dedicated managed servers for ADF Applications such as Human Workflow and BPM

    Workspaces if used frequently.

    SSL Usage Be aware that SSL encryption is coming with a significant CPU overhead. Consider using SSL termination by hardware load balancers and using encryption only in DMZ

    Policy Store The file-based policy store (system-jazn-data.xml) is not suitable for production

    environments.. For production deployments Oracle highly recommended to use the database or OID for the

    policy store.

    Development Environments Admin Server-only domains should be used only in development environments. Use Development Mode Domains only for development environments. Use Production Mode for

    all other domains Consider tuning JVM heap settings for JDeveloper in

    ORACLE_HOME/jdeveloper/ide/bin/ide.conf

    April 2013

    31Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning Java Virtual MachineHeap Size and Garbage Collection Basic Recommendations

    The goal of tuning your heap size is to minimize the time that your JVM spends doing garbage collection while maximizing the number of clients that the Fusion Middleware stack can handle at a given time.

    Best practice is to tune the time spent doing garbage collection to within 5% of execution time.

    In production environments, set the minimum heap size and the maximum heap size to the same value to prevent wasting virtual machine resources used to constantly grow and shrink the heap.

    Ensure that the sum of the maximum heap size of all the JVMs running on your system does not exceed the amount of available physical RAM in order to prevent the OS from paging.

    Monitor low memory conditions by configuration in Administration Console (Configuration -> Tuning).

    April 2013

    32Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning Java Virtual MachineSOA Suite Recommendations

    Use 64-bit JVM for 64-bit platforms By the use of UseCompressedOops, a reduction of memory usage by

    something in the order of 10% can be expected. In Java SE 7, UseCompressedOops is the default for 64-bit JVM processes when Xmx isn't specified or is less than 32GB.

    The recommended garbage collection setting for SOA/BPM is UseParallelOldGC which will cause the JVM to use the Parallel Scavenger collector in the young generation and the Parallel Old collector in the tenured generation.

    If running ADF applications (human task user interfaces) on the same managed server as BPM is running on, use the concurrent garbage collector UseConcMarkSweepGC.

    April 2013

    33Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning JDBC Datasources

    Applications obtain database connections using an application server managed data source., which can be configured in WebLogic Server Console. Connection Pools

    When configuring the data source, ensure that the connection pool has enough free connections.

    Statement CachingStatement caching can eliminate potential performance impacts caused by repeated cursor creation and repeated statement parsing and creation. Statement caching also reduces the performance impact of communication between the application server and the database server.

    Initial CapacityThe initial capacity of physical database connections determines the number of connections to be opened when the server is started. For frequently used databases it is recommended to configure a higher value to avoid unnecessary open and close of connections.

    Connection TestingTry to avoid unnecessary connection testing.

    April 2013

    34Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning Dehydration StoreHash Partitioning Tables (SOA Suite)

    Consider using hash partitioning on your tables and indexes if your data does not easily lend itself to range partitioning, but you would like to partition for performance and manageability reasons. Hash partitioning provides a method of evenly distributing data across a specified number of partitions. Rows are mapped into partitions based on a hash value of the partitioning key.

    To improve performance, consider using hash partitioning on the following tables:

    Partitioned Table Name Partition Type NumberAUDIT_COUNTER Hash partitioning of AC_PK index Not ApplicableCUBE_INSTANCE Partitioned and Reverse key index Not Applicable

    CI_CREATION_DATECUBE_SCOPE Partition by hash (CIKEY) Partitions = 200MEDIATOR_CASE_INSTANCE Partition by hash ("ID") Partitions = 200XML_DOCUMENT Partition by hash (document_id) Partitions = 200

    April 2013

    35Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning Dehydration StoreHash Partitioning Indexes (SOA Suite)

    Further, consider using hash partitioning on the following indexes:

    Hash Partitioned Indexes COMPOSITE_INSTANCE_CREATED BRDECISIONINSTANCE_INDX3 MEDIATOR_INSTANCE_INDEX2 MEDIATOR_INSTANCE_INDEX5 MEDIATOR_INSTANCE_INDEX6 MEDIATOR_INSTANCE_INDEX1 MEDIATOR_INSTANCE_INDEX3 MEDIATOR_CASE_INSTANCE_INDEX2 MEDIATOR_CASE_DETAIL_INDEX1 REFERENCE_INSTANCE_CO_ID CI_NAME_REV_STATE DOC_DLV_MSG_GUID_INDEX STATE_TYPE_DATE

    April 2013

    36Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning SOA Service EnginesGeneral Considerations

    .Stop unnecessary ComponentsConsider stopping if not used: worklistapp composer b2bui OracleAppsAdapter OracleAq Adapter MQSeriesAdapter OracleBAMAdapter

    . Disable DBMS job to refresh B2B Materialized View If B2B is not being used, disable the DBMS job that refreshes the B2B materialized view. This job

    runs every minute by default. Look for dbms_refresh.refresh('"DEV_SOAINFRA"."B2B_SYSTEM_MV"') in dba_jobs.

    . Purge Repository Database regularly Purge instances of SCA processes regularly using the date-based purge scripts or partitioning.

    April 2013

    37Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning SOA Service EnginesSOA Infrastructure Settings

    Audit LevelLevel of message tracking infrastructure to be collected by the infrastructure . This information is collected in repository database. Should not be set to Development if not needed.

    Logging LevelThe default logging level is "NOTIFICATION". For production environments, consider using the lowest acceptable logging level, such as "ERROR" or "WARNING" whenever possible.

    Property CompositeInstanceStateEnabledThis option enables separate tracking of the running instances. All instances are captured as either running or not running and should not be enabled in production environments.

    Property instanceTrackingAuditTrailThresholdThis parameter is used to limit the audit trail size while it is being built. The default value is 1MB. This parameter can improve performance, as it prevents huge audit trails to potentially consume a lot or all the memory.

    Property AuditKeyExtends (BPM)The default block size is 1000. If there are more than 200 instances created per minute, consider increasing the size of the block.

    April 2013

    38Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning SOA Service EnginesBPEL / BPM Basic Tuning

    April 2013

    39

    Dispatcher Invoke ThreadsThe dspInvokeThreads property specifies the total number of threads allocated to process invocation dispatcher messages. Invocation dispatcher messages are generated for each payload received and are meant to instantiate a new instance

    Dispatcher System ThreadsThe dspSystemThreads property specifies the total number of threads allocated to process system dispatcher messages. System dispatcher messages are general clean-up tasks that are typically processed quickly by the server..

    Dispatcher Engine ThreadsThe dspEngineThreads property specifies the total number of threads allocated to process engine dispatcher messages. Engine dispatcher messages are generated whenever an activity must be processed asynchronously. If the majority of processes deployed are durable with a large number of dehydration points (mid-process receive, onMessage, onAlarm, and wait activities), greater performance may be achieved by increasing the number of engine threads.

    Higher Settings will allow for more concurrency ( but will increase JVM heap utilization)

    Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning SOA Service EnginesBPEL / BPM Basic Tuning Database persistence property

    April 2013

    40

    The oneWayDeliveryPolicy applies to asynchronous processes only and can be defined by the developer in the composite or on global level.

    Value Description

    async.persist (Default) Delivery messages are persisted in the database. With this setting, reliability is obtained with some performance impact on the database. In some cases, overall system performance can be impacted.

    async.cache Incoming delivery messages are kept only in the in-memory cache. If performance is preferred over reliability, this setting should be considered.CAUTION: If you set the oneWayDeliveryPolicyproperty to async.cache and your system fails, you may lose messages.

    sync Directs Oracle BPEL Server to bypass the scheduling ofmessages in the invoke queue, and invokes the BPELinstance synchronously. In some cases this setting can improve database performance.

    Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Tuning SOA Service EnginesMediator Basic Tuning

    April 2013

    41

    Metrics LevelThis property controls DMS metrics tracking level. By default, DMS metrics collections is enabled. If you do not need to collect DMS metrics data, consider setting the metricsLevel to Disabled to improve performance.

    Concurrency (parallel routing rules only) DeferredWorkerThreadCount specifies the number of deferred dispatchers for processing

    messages in parallel. For higher loads consider increasing this parameter to have more number of outbound threads for deferred processing as each parallel rule is processed by one of the DeferredWorkerThreads. Default Value is 4 Threads.

    When Mediator routing rule type is set to 'Parallel', DeferredMaxRowsRetrieved sets the number of maximum rows (maximum number of messages for parallel routing rule processing) that are retrieved from Mediator store table (which stores messages for parallel routing rule for processing.) Default Value is 200 rows.

    Audit LevelConfigure only the minimum required audit level for the respective environment.

    Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Application Design ConsiderationsSOA Applications (SOA Suite BPEL/BPMN) *)

    April 2013

    42

    Process ComplexityAs a general rule of thumb, it is not desirable to have a BPEL process with more than one hundred activities in it or a BPMN process with more than about fifty activities. Consider breaking the process down into smaller sub-processes in order to control the amount of memory required to maintain state and variables.

    Synchronous vs. Asynchronous ProcessesSynchronous processes should never have: Mid-process breakpoint activities (e.g. receive, onMessage Alarm, Wait) A non-idempotent (i.e. non-retriable) invoke A non-blocking (i.e. parallel) invoke Explicit dehydration, i.e. the checkpoint activityThe presence of any of these in a synchronous process will cause the engine to treat the process the same way as an asynchronous process and dehydrate (and time-out can occur as well)

    While async processes will attract dehydration, they can easier be load-balanced across nodes in a cluster on the other hand. Consider to disable audit instance tracking for sync processes if business requirements allow to do so.

    Monitoring and Tuning Fusion Middleware 11g

    *) Source: Oracle , March 2013, Performance Tuning for Oracle Business Process Management Suite 11g

  • 2013 Trivadis

    Application Design ConsiderationsSOA Applications (SOA Suite BPEL/BPMN) *)

    April 2013

    43

    Anti-pattern: Synchronous fault-handlingFaults should always be handled asynchronously, if fault handling logic is rather complex, so that the resources that the engine is using to run the process can be released immediately.. Consider adding an asynchronous point like a JMS queue between failing logic and fault handling.

    Use of LoopsAvoid extensive use of loops. Use of large loops (i.e. more then ten activities in them) tends to perform poorly with large number of instances or large variables.Use of large loops can require the engine too keep large data objects in the JVM heap and perform a large number of database transactions for dehydration of state and could lead to garbage collection bottlenecks. Consider using de-batching strategies for handling large payloads and to control the number of records handled in a transaction.

    Translate (XSLT) or AssignAlways use assign activity for simple data transformation. The use of transformations should be reserved when large number of fields need to be transformed or more complicated logic needs to be assigned.

    Monitoring and Tuning Fusion Middleware 11g

    *) Source: Oracle , March 2013, Performance Tuning for Oracle Business Process Management Suite 11g

  • 2013 Trivadis

    Application Design ConsiderationsSOA Applications (SOA Suite BPEL/BPMN) *)

    April 2013

    44

    Avoid empty elements in the payloadPassing empty elements can add a significant overhead both in terms of marshaling and in terms of processing and data transformation logic.

    Complex DecisionsIf there is a need to make a complex decision, consider implementing the decision in the rules engine rather than modeling a set of if/then logic in the process itself. Execution of complex logic in the rules engine is much more efficient in terms of memory footprint, speed of execution and volume of audit data generated.

    Avoid Marshaling overheadConsider co-locating components with other components will avoid network propagation delay and will also avoid marshaling and un-marshaling the data as the engine is able to recognize and optimize local calls.

    Creating direct bindings for components will allow the engine to avoid unnecessary marshaling. However, this may not necessarily improve overall performance and scalability.

    Monitoring and Tuning Fusion Middleware 11g

    *) Source: Oracle , March 2013, Performance Tuning for Oracle Business Process Management Suite 11g

  • 2013 Trivadis

    Tuning OSBOperational Settings

    April 2013

    45

    MonitoringEnable Monitoring only if needed to reduce network traffic.

    TracingTurn-on Tracing only if needed in order to avoid printing the entire message context including headers and message body in the server logs.

    Cache Tuning for Proxy Service run-time dataOSB caches proxy service runtime meta-data using a two-level LRU cache with static and dynamic sections. The static section will never be garbage collected. The cache introduces a performance tradeoff between memory consumption and compilation cost.

    The number of proxy services in the static portion of the cache is 100 by default and can be tuned by setting the value in in the setDomainEnv.sh file as an extra java argument as follows:-Dcom.bea.wli.sb.pipeline.RouterRuntimeCache.size={size}

    Note that caching proxy services may help throughput but could impact memory usage.

    Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    Application Design ConsiderationsOracle Service Bus *)

    April 2013

    46

    Using Context VariablesAvoid creating many OSB context variables that are used just once within another XqueryContext variables created using an Assign action are converted to XmlBeans and then reverted to the native XQuery format for the next XQuery Multiple Assign actions can be collapsed into a single Assign action using a FLOWR expression. Intermediate values can be created using let statements.

    Transforming Context VariablesUse a Replace action to complete the transformation in a single step. If the entire content of $body is to be replaced, leave the XPath field blank and select "Replace node contents". This is faster than pointing to the child node of $body (e.g. $body/Order) and selecting "Replace entire node". Leaving the XPath field blank eliminates an extra XQuery evaluation..

    Payload as Input to TransformationUse $body/*[1] to represent the contents of $body as an input to a Transformation (XQuery / XSLT) resource. OSB treats "$body/*[1]" as a special XPath that can be evaluated without invoking the XQuery engine.

    Monitoring and Tuning Fusion Middleware 11g

    *) Source: Oracle Fusion Middleware Performance and Tuning Guide 11g (E10108)

  • 2013 Trivadis

    Application Design ConsiderationsOracle Service Bus *)

    April 2013

    47

    Enable Streaming for pure content-based routing scenariosRead-only scenarios such as Content-Based Routing can derive better performance from enabling streaming. OSB leverages the partial parsing capabilities of the XQuery engine when streaming is used in conjunction with indexed XPaths. Thus, the payload is parsed and processed only to the field referred to in the XPath.

    Appropriate QoS LevelDo not set XA or Exactly-Once unless the reliability level required is once and only once.OSB can invoke a back end HTTP service asynchronously if the QOS is "Best-Effort". Asynchronous invocation allows OSB to scale better with long running back-end services. It also allows Publish over HTTP to be truly fire-and-forget.

    XQuery Tuning Avoid the use of double front slashes (//) in XPaths Index XPaths where applicable Extract frequently used XPaths of large documents and intermediary variables within a FLOWR

    expression

    Monitoring and Tuning Fusion Middleware 11g

    *) Source: Oracle Fusion Middleware Performance and Tuning Guide 11g (E10108)

  • 2013 Trivadis

    TuningTop Resources

    Oracle Database Performance Tuning Guide 11g(B28274)

    Oracle Fusion Middleware Performance and Tuning for Oracle WebLogic11g(E13814)

    Oracle Fusion Middleware Performance and Tuning Guide 11g(E10108)

    Performance Tuning for Oracle Business Process Management Suite 11g

    April 2013

    48Monitoring and Tuning Fusion Middleware 11g

  • 2013 Trivadis

    BASEL BERN LAUSANNE ZRICH DSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MNCHEN STUTTGART WIEN

    Thank you.Trivadis AG

    Matthias Furrer & Daniel Joray

    Europa-Strasse 5CH-8152 Glattbrugg

    www.trivadis.com

    April 2013

    49Monitoring and Tuning Fusion Middleware 11g