WebMethods Tuning Guidelines
WebMethods Tuning Guidelines
Performance Team
TABLE OF CONTENTS
1. Introduction 4
2. Disclaimer 5
3. Integration Server 6
3.1. Primary optimization 6
3.2.1. Logging 7
[Link]. MaxPooledStatements 9
3.2.5. Adapters 9
[Link]. MQ adapter 10
7.3. MWS DB 23
7.5. Glue 23
7.6. Jetty 24
7.7. SAML 25
7.9. LDAP 26
1. Introduction
This paper presents guidelines for various webMethods and IoT analytics product’s configurations which
could be followed to exercise optimum and acceptable performance SLAs when working with webMethods
products.
Integration Server:
Integration Server is the core application server of webMethods and is used in enterprise level integrations.
Adopting best practices when building the solution helps to avoid redundancy and does not limit the
solutions to scale on ever growing business needs.
JMS:
Integration Server can connect to webMethods Broker, Universal Messaging or other JMS Providers using
JMS Connection Aliases, JMS Triggers and a number of built-in JMS services for sending and receiving
messages.
The documents does not factors in the general JMS provider specific attributes like persistent messages
non-persistent impact on throughput. Trivially, persistent throughput messages will be limited by the
storage speed. While throughput of non-persistent messages will be limited by memory capacity and
network bandwidth. Further, JMS provider specific attributes which would impact performance is beyond
the scope of this document.
MWS:
My webMethods Server (MWS) provides a user interface to webMethods products such as Optimize,
Broker, Process Monitor, and Task Engine. MWS is also a container for Task Engine servlets and custom
portlets; it uses an embedded Jetty server as its servlets environment and is capable of very high
performance.
MWS instance runs as a multi-threaded process within a single Java Virtual Machine (JVM) which relies on
operating system resources.
The users communicate with MWS through a web (HTTP) interface, whereas MWS accesses back end
resources through TCP/IP sockets. MWS also requires the services of a database in which state and
configuration information is stored. MWS communicates with other applications, such as Optimize and
Integration Server, through web services over HTTP.
2. Disclaimer
This document lists just the general guidelines which may help in improving the performance of a typical
webMethods installation. These guidelines may degrade performance in different environments and use
cases. These guidelines can be used on trial and error basis only. Please contact Performance Team in
Software AG for suggestions, help and clarifications.
3. Integration Server
Optimization and review of the Flow and Java related services are important while implementing the
processing algorithm in Integration Server.
1. Pipeline value Not dropped Needs to be If there is large pipeline data then it
dropped until can increase network traffic
required
3.2.1. Logging
I/O is many times more expensive than CPU/ memory operations. Keeping a log of key documents for
auditing and recovery purposes can have a significant effect on performance. Logging adversely impacts
performance because logging threads must be synchronized.
Based on the solution and business requirement, components which should be enabled must be
configured to use database as destination and logging mode should be synchronous. This is based on the
current design of Integration Server.
In some cases, larger thread pools may increase throughput. However, larger thread pools do not always
translate into higher throughput. When the Integration Server is permitted to execute a large number of
threads concurrently, context switching can exert a noticeable effect on performance. The only way to
determine the appropriate size of the thread pool is through testing. To identify the optimal pool size,
increase the number of threads in the pool and measure the performance under each size. (Note that
every time you allocate more threads to the server thread pool, you should also increase the heap size, as
every thread needs some amount of memory for itself).
[Link]. MaxPooledStatements
Setting the MaxPooledStatements connection option enables statement pooling. Enabling statement
pooling allows the driver to reuse Prepared Statement objects. When Prepared Statements are closed,
they are returned to the pool instead of being freed and the next Prepared Statement with the same SQL
statement is retrieved from the pool rather than being instantiated and prepared against the server.
It is really important to have separate thread pool definitions for each of the components. For better
performance minimum value should be set to some number and not zero.
To prevent Login Time out related problem which occurs because of multiple reasons, it is recommended
to set LoginTimeout, if login time out is observed frequently.
LoginTimeout, in seconds, is the time driver that waits for connections to be established before returning
the control to the application and throwing timeout exception. Default is 0, which means driver does not
time out for a connection request.
Sample URL-
DB URL: jdbc:wm:oracle://DBhost:<Port>;serviceName=wmschema;LoginTimeout=120
To prevent this problem, Login Timeout parameter can be appended at the end of your DB URL for the
JDBC Pool or JDBC Adapter. The Login Timeout value should be set based on network performance in
the landscape.
3.2.5. Adapters
The Java object generated by webMethods to perform the Stored Procedure call is CallableStatement. The
Callable Statements object is created every time the adapter service is invoked. The following properties
can be configured to enable caching of the callable or prepared statements.
ImplicitCachingEnabled=true.
maxStatements=500.
Block timeout
This field specifies the number of milliseconds that the Integration Server will wait to obtain a connection
with the database before it times out and returns an error. For example, a pool with Maximum Pool Size of
20 is configured. In the event of 30 simultaneous requests for a connection, 10 requests will be waiting for
a connection from the pool. If the Block Timeout is configured to 5000, the 10 requests will wait for a
connection for 5 seconds before they time out and return an error. If the services using the connections
require 10 seconds to complete and return connections to the pool, the pending requests will fail and
return an error message stating that no connections are available. Block Timeout value that is too high
may encounter problems during error conditions. If a request contains errors that delay the response, other
requests will not be sent. This setting should be tuned in conjunction with the Maximum Pool Size to
accommodate such bursts in processing.
Expire timeout
If connection pooling is enabled, this field specifies the number of milliseconds that an inactive connection
can remain in the pool before it is closed and removed from the pool. The connection pool will remove
inactive connections until the number of connections in the pool is equal to the Minimum Pool Size. The
inactivity timer for a connection is reset when the connection is used by the adapter.
Setting Expire Timeout value too high may result in a number of unused inactive connections in the pool.
This consumes local memory and a connection on your backend resource. This could have an adverse
effect if resource has a limited number of connections. If Expire Timeout value is set too low, performance
could degrade because of the increased activity of creating and closing connections. This setting should
be tuned in conjunction with the Minimum Pool Size to avoid excessive opening/ closing of connections
during normal processing.
[Link]. MQ adapter
Wait interval
Wait interval is something like pull interval which listens to the queue after every time out irrespective of
whether the queue is empty or full. Once it starts receiving messages, it will keep on pulling messages until
the queue becomes empty. Once the queue becomes empty, it will wait for the “waits interval” time out to
happen so that it can listen to the queue and check for the messages.
It is always better to have higher Wait Interval (increased wait interval time) when incoming message rate
is high and real time. Wait interval can be set to smaller value as well but it consumes lot of CPU cycles
when multiple listeners are configured and becomes overhead when number of cores on the box are 2 or
less.
Pool size
The minimum number of connection objects that remain in the connection pool at all times. When the
adapter creates the pool, it creates this number of connections.
The maximum number of connection objects that can exist in the connection pool. When the connection
pool has reached its maximum number of connections, the adapter will reuse any inactive connections in
the pool or if all connections are active, it will wait for a connection to become available.
The best performance in the volume tests as well as in the scalability scenarios can be achieved using the
following parameters.
[Link]
This parameter can be set to "true" or "false". If set to "true", then the message body of the incoming
document will not be stored to disk, although a transaction will be created (or maintained) for the incoming
document, and the transaction can be monitored later in the transaction list.
[Link]
This parameter can be set to "true" or "false". If set to "true", then the information in the message store will
be read or written asynchronously.
[Link]
The parameter can be used to set the "Time-To-Live" threshold value of the asynchronous read/ write
cache. It is only effective when "fastAsyncMode" is set to true. The "Time-To-Live" value determines how
many seconds a transaction will be kept in the internal cache until it gets purged.
[Link]
This parameter can be set in the [Link] to improve the transaction store performance.
4. Process Engine
4.1. Cost of process step
After the business tasks are identified, the technical staff implements it in the process model. Optimal
designing of business process is highly important for its performance and throughput (for both Business
and BPM software). Research has been conducted to find the cost of a process step in a model. Let us
assume a Business Process with 10 steps (excluding the document receive step). Each step is associated
with Integration Server flow service which implements some logic.
Baseline numbers were taken with 10 steps process model. Step 2 and 3 were combined as one step and
their business logic were also executed sequentially so the functionality is not affected but the business
process has lost one step. Now there are 9 steps in the process model performing the same business
logic. Throughput number for 9 step process model was recorded. Eventually more steps were combined
together and throughput was measured at every step. Refer to the following result table:
When correlation is introduced in a process model, extra database calls are included in the execution flow
to establish and lookup correlation. There is an additional transition delay of extra receive step which gets
added here.
COMPLEX joins cost depends on how many simple join types are used in it. The cost can be predicted as
well. Consider the following two cases:
There is no difference in performance between using simple AND join and COMPLEX performing AND
operation.
Split time is directly proportional to the number of steps it splits into. Only the critical path time is accounted
for split time and not all possible paths.
OR and XOR joins has almost the same impact in terms of performance.
OR and XOR joins takes only specific time, no matter how many steps are actually joining. This is
because, out of all possible paths only one holds green signal. Thus, may it be 2 steps or 10 steps joining
at a step with OR or XOR join type and one step condition is true, then it’s going to take only same time.
5. Trading Networks
5.1. Trading Networks performance guidelines
Overall performance for Trading Networks is very tightly bound to the RDBMS performance. In every test
case, the database became the bottleneck. Sometimes the disk I/O is maxed out. In other instances, the
CPU in the database server becomes the bottleneck. To optimize Trading Networks, focus first on
database optimization. For internal Trading Networks document submissions, use
[Link]:routeXML instead of [Link]:receive. This will bypass the user check and is therefore
slightly faster.
Within Processing Rules, execute Flow services in asynchronous mode where appropriate or practical.
The property "[Link]".if set, it will use that percentage of server threads for Trading
Networks Job Manager and this is used for Trading Network outbound delivery of documents and not
incoming (both for routing and guaranteed jobs).
There isn't any default value for [Link]. If a document is written to TSpace, it would
get deleted in the following cases:
If the timeToLive time is over from the creation time of the document
The top level service has completed its execution
The document will get deleted from TSapce when the next document is created in TSapce. The value
shouldn't be too large, or else the files will be in TSapce for a longer time and there may be undesirable
results where TSpace gets filled up and no more large docs can be processed. Keep it to optimum value
(say around 60 secs or 3 mins) which doesn't affect the processing of document and also there is regular
cleanup of TSpace.
[Link]: Specifies whether you want Trading Networks to log profile auditing
information to the activity log when you manage profiles from My webMethods Server. This property also
controls whether you want to log actions related to role-based access.
[Link]: Specifies whether you want Trading Networks to log TPA auditing information to the
activity log when you manage TPAs.
[Link]: Specifies the number of days so that Trading Networks deletes documents
older than the specified number of days. Specify a number from 0 through 730365. If you omit this property
or specify 0 for this property, Trading Networks does not delete documents.
[Link]: Specifies the maximum number of result rows that Trading Networks must retrieve
from the database for each query. If you set the value as zero, then all the rows of the query result are
retrieved from the database.
[Link]: Specifies whether you want Trading Networks to drop pipeline variables that
represent Trading Networks objects. Trading Networks drops the pipeline variables after it completes the
execution of the [Link]:receive entry point service. You specify the pipeline variables to drop using the
[Link] property. Dropping these objects reduces the time it takes to process each document
and improves the overall performance of the server because the content handler does not have to format
the objects for return to the client. Specify true if you want Trading Networks to drop the objects.
[Link]: Specifies whether you want Trading Networks to cache SQL statements in memory
rather than read them from WmTN/config/[Link]. Specify true to have Trading Networks cache SQL
statements; specify false to have Trading Networks read SQL statements from a file.
In JMS, a transaction organizes a message or group of messages into an atomic processing unit.
Transactions in Integration server may be used for sending or receiving. When sending, the calls to the
JMS send service must be wrapped by a call to startTransaction and a commit. Although there is no
general guidance, a starting figure of 10 or 20 messages per batch is often appropriate.
The JMS interactions follow the JTA specification relating to the use of Local or XA transactions. Only one
Local Transaction resource may be enlisted in a transaction context. Therefore, where JMS interactions
need to involve more than one JMS Provider resource (varies depending on the JMS Provider used) these
will need to be through XA Transaction connections.
Adoption of XA transaction may bring in a considerable and noticeable performance impact on the
solution. Nature of the solution and JMS provider specific may impact the performance further. Hence, as
part of design decisions it should be considered whether XA is really required as derived from solution
requirement.
A viable alternative to XA transactions in many solutions is to be support guaranteed at least once delivery
with duplicate detection mechanisms in place. Depending on solution requirements, this is sometimes
appropriate, especially if duplicate detection capabilities are required for reasons other than batching.
The Integration Servers are often able to generate better throughput if there are multiple JMS Connections
to the JMS Provider. This is particularly the case when transactions are being used, because transactions
under JMS, limit some of the batching/ threading optimizations possible.
Multiple triggers consuming from or sending to one or more queues/ topics can be configured to use
multiple JMS Connection Aliases even if connecting to the same JMS Provider instances. This is relatively
trivial to implement because multiple triggers can be easily configured to invoke the same services.
This approach may be useful as it allows a transactional trigger to be used but makes it easy to create
concurrency in the solution (simply by copying the triggers and optionally using different JMS connection
aliases).
The exact benefit of using multiple JMS Connection Aliases and multiple triggers in this way would need to
be investigated for each solution implemented. The same benefits may be achievable by using the trigger
thread controls and multiple triggers using a single JMS Connection Alias and that approach should be
tried first.
Throughput requirements are directly driven by the ability to exercise maximum concurrency at the trigger
levels. Optimum values for the threads in Integration Server governing the concurrent volumes should be
determined by iterative performance test mechanisms.
Higher threads does not necessarily mean higher throughput. Other factors like acknowledgement modes,
target service latency invoked by the trigger thread, storage sub-system speed and so on also impact
overall concurrency.
At the trigger levels, to maintain the throughput it should be balanced with the message processing
overhead specially in cases of batch processing.
Operational laws of performance could be used to get a hint about the concurrency levels
Triggers in default configuration operate on a single TCP connection to the JMS provider feeding the
messages to the available threads. In high performance requirement scenarios, single connection leads to
limiting point for concurrency with the property available in Integration Server under JMS connection alias
known as “create new connection per trigger“. Desired connections to JMS provider could be established
from the trigger properties section.
In the trigger property section through Software AG designer, connection count can be configured. Range
is between 1 to 10 connections. It has been observed that starting with 5 to 8 connections is a good option
to begin with.
Solution design plays critical role in maintaining the long term scalability goals as per business growth. In
JMS based integrations, messages processing algorithm implementation plays vital role in attaining the
required throughput. Small reduction in latency of service processing gives substantial gain in overall in the
increasing throughput of the solution.
It is equally important to understand each layer of solution to derive the confidence when optimum
configuration from the JMS facilities is reached and when to start looking at other options outside the
application boundary for improvements.
Contention either at the solution level or the resource level degrades throughput. It should be
observed that reading and writing to the same queue in real time might bring queue contention into
the landscape.
Unexplained variations in the performance tests run over long duration could hint resource
saturations or the external resources like Database related contentions.
JMS provider may fail to maintain the sustained publish and subscribe rate if there are too many
client connections operating concurrently on the single queue.
High latency requests (or even transient high latency due to system slowdowns) may generate
more concurrency resulting in further degradation of the system. Concurrency should be
constrained.
The connection to the JMS Provider will normally be utilizing network bandwidth and this must be
sufficient to move messages, payloads and support any overhead.
Connected or dependent systems may influence throughput in an unpredictable fashion. For
example, if production loads on a database vary and sometimes cause reduced throughput on a
critical database for the solution (such as when a backup is in process or some large batch
processing has started), this would directly affect throughput.
The JMS Provider must be able to support writing to storage for persistent messages and the
storage itself may become a limiting factor.
There are too many potential external factors to mention and others will exist. However, the solution
design and the assessment of performance cannot be done without considering the other impacts that
increasing threads and concurrency in the Integration Server will have especially on the JMS Provider
and on the database in use.
Number of Integration Server instances – multiple Integration Server instances increases the
number of consuming resources
Number of JMS Connection Aliases – particularly when using transactions, the use of multiple
separate JMS Connection Aliases allows the Integration Server to generate a more even loading
on the system.
JMS Transaction Mode – configured in the JMS Connection Alias, transactions may be used
when sending to group multiple messages and reduce the commit load on the JMS Provider
The desired transaction design will dictate which transaction model is appropriate.
The use of transactions prevents the JMS Triggers using batches; therefore if transactions are to
be used for consuming messages, the mechanism to obtain messages must be re-implemented to
use on-demand JMS consumers under the control of an explicit transaction.
If XA transactions are to be used across multiple Queue Managers, then the impact on throughput
needs to be validated.
Create New Connection per Trigger – this is enabled on the JMS Connection Alias and affects
the consumption of messages by JMS triggers. It allows Integration Server to create separate
groups of connections per trigger in order to increase the ability to deliver JMS messages to
service threads.
Initial recommendation is to enable this option and see the setting on the JMS triggers in Designer.
Producer Caching Mode – this is enabled on the JMS Connection Alias and affects the sending
of messages to the Queue Managers. It allows Integration Server to create one or more groups of
persistent sessions which reduces the overhead associated with creating sessions when sending
messages. The maximum, minimum and timeout values must also be specified.
o Initial recommendation is to enable this option with at least the default session pool,
having a minimum of zero and a maximum equal to the maximum number of threads
that may be sending at any given time (typically the maximum number of trigger
execution threads). The timeout should be set to 60,000 milliseconds.
o Using zero as the minimum prevents stale or broken network connections appearing
after long uptime periods without affecting average throughput in any significant
manner. If the transient (and minimal) latency associated with recreating a new
session after the timeout period is not acceptable, then this should be increased.
o Separate groups of sessions may be allocated to one or more specified JMS
destinations in order to be more selective about reserving sessions for sending
particular messages. This is configured in the JMS Connection Alias as well.
o Per destination connection pools may be selected depending on the solution design
but there is no general guidance.
Number of JMS Triggers – a single JMS trigger may be duplicated to provide additional
bandwidth for consuming messages from a particular source.
o Initial recommendation is one trigger which may be increased if performance testing
shows this to be beneficial.
o The Connection Count per JMS trigger has an imposed limit of 10 per trigger. Multiple
triggers will also increase the ability to generate more than 10 connections if needed.
o Multiple triggers generate concurrency in the management of connections to the Queue
Managers. This is an appropriate way to increase the consuming resources in one
Integration Server for one source of messages.
o Using cut-and-paste is appropriate in Designer for both testing the instantaneous effect of
more triggers (pasting an enabled trigger dynamically creates a new trigger in a test or
development environment) and for creating multiple copies once the preferred
configuration of a trigger has been determined.
JMS Trigger properties – all set in Designer
o Processing Mode – this should be concurrent to permit multiple threads where possible.
Serial processing modes are uniquely constrained by processing latency and normally
present more specific problems associated with improving efficiency.
o Max Execution Threads – this controls the maximum number of service threads that will
be launched by the trigger to process consumed messages. This may only be increased
from one if the Processing Mode is concurrent.
The starting value should aim to generate the required number of execution
threads over all available triggers and Integration Server instances in order to
reach the required throughput (based on the latency for processing a single batch)
The calculation should be based on the processing latency and desired
throughput shown in section Error! Reference source not found., Error!
Reference source not found..
o Connection Count – this controls the number of JMS Provider Connections being used to
feed messages into the available service threads for the trigger. The value may range
from 1 to 10 but cannot exceed the Max Execution Threads.
Recommended starting value is 5 but this will need to be modified based on actual
performance measures.
Max Batch Messages – this controls the number of messages obtained from the message queue
and delivered to each service thread in one invocation for processing.
Searches: To optimize search performance, if you are a system administrator: Click Administration >
Content > Search Admin, click Tools -> Optimize Indexes to merge all segments in index to improve
performance.
CAF Applications: Because CAF applications depend on both the server and client browser, testing with
different browsers to identify whether performance bottlenecks are at the server or due to client rendering
should be conducted. Firefox generally performs better than Internet Explorer.
Minimize the number of controls per page to decrease render time. Another option is to use hide-able
panels and asynchronous controls with both the Lazy Load and Two Pass properties set to true to reduce
the number of controls rendered during the initial page load.
Simple controls have little negative impact on performance. Use as many simple controls on a single page
as required while conforming to good usability principles helps performance. Simple controls include all
read-only controls such as panels.
Loading large numbers of options in list controls increases render time. Generally, loading more than 100
items in simple lists, ‘select <item>’ and swap box controls should be avoided.
Minimize the number of list items displayed per page. Use pagination for tables and limit the page size to
no more than 20 rows when possible. Use asynchronous tables for faster rendering. The recommended
setting recommends sorting the table entries.
Minimize the size of sortable tables. Ensure that you have no more than 200 table rows when sorting is
required. . When the number of table rows must be more than 200, implement sorting in the
ISortableTableContentProvider implementation used by the table.
Use Tree controls only when it is really necessary. Using Async Tree with Lazy Load tree provider
implementation and expand the tree to the 1st level only by default for faster rendering.
Copy the [Link] file to the local package to improve the performance of the web application.
Note: Change "roleCacheLifecycle" attribute of "Role Cache" to value "1" from default "0". If
you are not using MWS roles for any permissions check in inside Integration Server, you can
also set "defaultCacheTimeout" attribute to "-1" to indicate that the cache never expires.
7.3. MWS DB
Location: <MWS_Installation>\server\<Instance_Name>\config
Significance - The max number of connections allowed being open to the database
Significance – 20% of max connection. Setting this value to too low will result in creating a new connection
at runtime instead of using it from a pool of connections. Set the MinConnections to a small non-zero
value.
The default session-timeout is 30 minutes. Ensure that the value does not exceed a couple of hours. Long
timeout values prevent you from knowing if the users are still using the system as their session will still
show as active in the session monitor.
7.5. Glue
Glue has a single configuration file that is loaded at startup from your file system or classpath. This
configuration file allows you to control settings for the Glue subsystems, such as thread pool sizes and
buffer capacity.
threadPoolSize
Significance - When the runtime system needs a thread, it requests the thread pool for a thread to run the
task. When the thread finishes the task, it adds itself back to the thread pool to be reused. The pool is
initially empty and grows on demand up to a maximum value. Each request needs 1 thread to service the
web service call.
maxOutboundKeepAlive
Significance - When a Glue client wants to communicate with a remote server, it requests the outbound
connection pool for an HTTP connection to the server. When the request has been sent and the response
has been received, the client leaves the connection open and gives it back to the pool to be reused. The
pool is initially empty and grows on demand up to a default maximum of 30 outbound connections. When
the maximum is reached, the least recently used connection is closed to make room for a new connection.
maxInboundKeepAlive
Significance - When a Glue server receives a connection request from a remote client, it grants the
request, creates the inbound HTTP connection, and then allocates a thread from the thread pool to service
the connection. If there are no available threads, the request is queued until a thread becomes available.
After the request has been serviced, the HTTP server has to decide whether to close the connection or to
keep it alive so that it can quickly process additional requests from the same client. By default, up to 50
inbound connections are kept alive at any time. Default value for the maximum number of inbound
connections kept alive can be changed.
clientReadTimeout
serverReadTimeout
Acceptors
Significance - The number of thread dedicated to accepting incoming connections. This should be set to
number of cores. It is assumed that you can dedicate half of the available cores for My webMethods
Server.
7.6. Jetty
Jetty is a HTTP open server used within MWS. The Jetty configurations are defined in the [Link] file. It’s
important not to over-allocate minimum number of threads. Setting the minThreads and maxThreads
parameters to a very large number creates a large number of threads consuming resources. Further,
garbage collection takes a long time when there are a large number of threads.
minThreads
The minimum number of unused threads to keep within the thread pool. A large number of unused threads
will allow the server to respond to sudden increase in load with little latency. If there is an estimation of
max and average load, the difference can be in between average and maximum.
maxThreads
Limit to the number of threads that can be allocated to connections for that HTTP listener. This option will
limit the number of simultaneous users of the server as well as the maximum memory usage. The primary
objective of the maxThread parameter is to protect the server from excess resource utilization from high
connection or request rates.
Out of memory
Each accepted connection/ thread consumes memory and unlimited threads will eventually result in an
OutOfMemoryException. Note that the memory allocated to the JVM can be increased to avoid this limit,
but at some level physical memory will be exceeded and the server performance will decline. Eventually,
virtual memory will be exhausted as well.
Out of threads
Threads are normally implemented by the host operating system and are a finite resource that can be
exhausted. The operating system can normally be tuned to increase this limit, but not indefinitely as
system performance will eventually degrade.
7.7. SAML
SAML authentication can reduce performance because the following happens for every call between
Integration Server and My webMethods Server.
For this example, consider there is on Integration Server instance named IS1 and two My webMethods
Server instances named MWS1 and MWS2. When performing a SAML authentication:
If the SAML validated web service request is routed to MWS2, it does not have this assertion in its
memory. MWS2 obtains the originator from the assertion (example, MWS1) and uses MWS Remote
Command Invocation (this is an HTTP call) to call directly MWS1 to validate the assertion and then
responds back to IS1 with positive or negative result. The parameters mentioned below have to be set
when MWS are configured as a cluster. SAML in this use case adds additional overhead to web service
interactions between MWS and IS. This increases the authentication caching used by the Common
Directory Services running in IS.
-[Link]=3600 (The default is 2 minutes, but this info doesn't often change so
increase to 1 hour or more).
-[Link]=10 (default).
For example, if these are task searches returning large results - the requests consume a large amount of
memory.
7.9. LDAP
Set minimum size for the task cache to 10 times the default.
Role cache is set to ensure authentication is made invalid after a specified time, and not to invalidate user
logins. The [Link] file is used for user login invalidation.
Setting -[Link] to true rescues the number of database calls when deleting the
task.
-[Link] may need to be increased depending on your use case. Ensure that you don't
set a value that is more than the maximum number of available JDBC connections as it may otherwise
cause a deadlock.
-[Link]=30
This value is the number of threads that are used to process task events that may be low for real-world
applications.
For version 8.2 and later, this value is set to true by default. [Link] enables Task Engine
to not use JMS queue for processing task events and all the events are processed on the same JVM
instances.
The load on the database is minimized, thus speeding up processing. This parameter should only be used
in a single node set-up. If this parameter is enabled in a cluster, there is risk that the same task is updated
by multiple users.
Following are some of the best practices: If possible, firewalls or numerous hops through bridges should
be avoided to have a stable network and optimal performance.
There should be minimum network latency between Client(s) and a Universal Messaging server.
LAN over WAN is preferred.
Usage of HTTP/ HTTPS should be avoided for inter-realm communication. Using NIO socket
protocols.
HTTP(S) communication for Integration Server-Universal Messaging should only be used when
firewalls are involved.
In the event of Universal Messaging clustering, a dedicated inter-ream communication interface is
preferred.
Administration interface should also be separated from client - UM communication.
To have a dedicated interface for communication between client-UM and communication between
cluster nodes( inter-realm communication), see the following guidelines:
o Check "Allow for Inter-Realm", "Enable NIO"
o Uncheck "Advertise Interface", "Allow Client Communications"
o Client-UM communication
o Check "Advertise Interface", "Allow Client Communications", "Enable NIO"
o Uncheck "Allow for Inter-Realm"
o Admin Interface communication
o Check "Allow Client Connections" , "Enable NIO"
o Uncheck "Allow for Inter-Realm", "Advertise Interface"
For inter-realm communication, do not enable cert validation because all inter-realm communication goes
through "Deffi-Hellman" key exchange at connection creation. For Universal Messaging clients, we
recommend enabling certificate validation to use SSL. Unselecting the "Enable Cert Validation" option
makes the Universal Messaging clients to not require SSL certificates when connecting to Universal
Messaging server instances.
ABOUT SOFTWARE AG
Software AG offers the world’s first Digital Business Platform. Recognized as a leader by the industry’s top analyst firms, Software AG helps you combine existing systems on
premises and in the cloud into a single platform to optimize your business and delight your customers. With Software AG, you can rapidly build and deploy Digital Business
Applications to exploit real-time market opportunities. Get maximum value from big data, make better decisions with streaming analytics, achieve more with the Internet of
Things, and respond faster to shifting regulations and threats with intelligent governance, risk and compliance. The world’s top brands trust Software AG to help them rapidly
innovate, differentiate and win in the digital world. Learn more at [Link].
© 2015 Software AG. All rights reserved. Software AG and all Software AG products are either trademarks or registered trademarks of Software AG. Other product and
company names mentioned herein may be the trademarks of their respective owners.