IBM Support

AS2 performance in Sterling Integrator hints and tips

Technical Blog Post


Abstract

AS2 performance in Sterling Integrator hints and tips

Body

AS2 is a module built within Sterling Integrator (SI) and therefore any SI performance issues that might occur with the SI system can impact AS2 as well.

You should make sure that SI is installed according to the system requirements in terms of:

  • Memory installed on the server
  • Memory assigned to SI
  • The versions of the OS, database, jdbc driver and JDK used.
  • Database configuration according to documentation.
  • Database connectivity, make sure network link from SI to its database if installed on a different server is stable and performs well.

See below link to another SI blog about tuning and performance in general as well as the link to the SI performance documentation:

Performance Tuning TipsandSI Performance Documentation

Sizing and performance tuning is usually a task performed by IBM Professional services, they have tools available to them to help them determine the minimum specs required of a system depending on the number of transfers inbound and outbound, file sizes, file transformations, etc...

Do not hesitate to contact your IBM sales account manager to provide a quote to help you size and tune your system for a better performance while running your system.

Having said that, below you can find some hints and tips you might want to consider if you are experiencing performance issues while using AS2 within SI:

Note: If you decide to adjust your system according to any of the tips below, please open a PMR with IBM support advice confirmation that this change is the best to fit your environment.

  1. Total number of threads

    AS2 uses a lot of BP processing meaning there are quite a few different BPs used for outbound and inbound AS2 processing, it is therefore important to verify the total number of threads assigned to the system.

    by default the number of total threads assigned to SI is calculated by multiplying the number of cores (2 are assigned by default) by 4, so it assigns a maximum number of threads of 8 during installation, this can be a bottleneck in very busy system.

    - You should check the number of cores on the system and adjust it accordingly.

    - You can use the tuning utility within SI web interface to modify those parameters.

    - You can find the tuning utility under: Operations => System => Performance => Tuning

    - If you run the tuning utility to correct the settings, make sure you stop SI and run setupfiles after you finish running the tuning utility.

    - For more documentation about the tuning utility usage, see below links to the documentation on how to edit, view and restore tuning settings:

    a)Edit Performance settings

    b)View and Restore settings

  2. Queueing

    By default after installation all AS2 BPs run on queue 4. For best performance it is important to distribute the AS2 BPs so that they run on separate queues. Some considerations to take into account:

  • Separate the inbound from the outbound AS2 BPs, have them run on different queues.
  • Make sure that the AS2 BPs that send back responses (HTTP response or MDNs like per example the httpsyncsend and httpasyncsend BPs) run quickly so that the HTTP connection does not timeout before the response is sent back causing the partner to resend once again.
  1. List of AS2 BP for outbound file transfer:

The set of AS2 Bps used for outbound transfers will change depending on your implementation and on the AS2 partner configuration, see below complete list of all AS2 BPs used for outbound transfers.

  • AS2Outbound
  • AS2SendASyncMDN
  • AS2SendAndProcessAsyncMDN
  • AS2SendAndProcessNoMDN
  • AS2SendAndProcessSyncMDN
  • AS2SendNoMDN
  • AS2SendSyncMDN
  • DirectAS2SendASyncMDN
  • DirectAS2SendAndProcessAsyncMDN
  • DirectAS2SendAndProcessNoMDN
  • DirectAS2SendAndProcessSyncMDN
  • DirectAS2SendNoMDN
  • DirectAS2SendSyncMDN
  • MailboxAS2Add
  • MailboxAS2SendAndProcessAsyncMDN
  • MailboxAS2SendAndProcessNoMDN
  • MailboxAS2SendAndProcessSyncMDN
  • MailboxAS2SendAsyncMDN
  • MailboxAS2SendAsyncMDNSpawner
  • MailboxAS2SendNoMDN
  • MailboxAS2SendNoMDNSpawner
  • MailboxAS2SendSyncMDN
  • MailboxAS2SendSyncMDNSpawner
  • HTTPClientSend
  1. List of AS2 BPs for inbound file transfer

    EDIINTParse, httpsyncsend and httpasyncsend should be given priority since they are the ones who process the inbound data and return the HTTP responses back to partner as well as the MDNs.

  • EDIINTParse
  • AS2Extract
  • AS2Inbound
  • MailboxAS2Add
  • HTTPAsyncSend
  • HTTPSyncSend
  1. Properties

    There's a property in the ediint.properties that can be set to have the different BPs used for outbound AS2 transfer to run in Inline mode instead of in Sync mode, diminishing the number of BP instances executed in the system.

invokeMode.outbound.SendAndProcessBP=INLINE

6.Run AS2Extract in inline mode

This can be done to avoid duplicates in case the outbound MDN fails to be delivered. This means that the MDN delivery never reaches the partner while the inbound data is processed fine, to avoid this you can set the option below in the partner AS2 relationship, this can only be done for partners configured to use synchronous MDN mode.

"Wait For Synchronous MDN Process To Complete Before Extracting Data"

7.HTTP server performance tunning

  • max http threads and jetty max threads property, by default is set to 10, if you are expecting to have more then 10 concurrent inbound http connections at any given time, you should consider to higher this properties (numOfmaxThread and numOfmaxJettyThread) that can be found in the http.properties.
  • Review the configuration of the HTTP server adapter for the setting "Total Business Process queue depth threshold". This setting can cause the HTTP server adapter to start refuse connections if set too low. This setting counts the total number of BPs (All BPs) queued on all of SI queues and if that amount is higher then the value configured in the parameter it will make the http server adapter refuse the connection.
  1. HTTP client performance tuning

    numOfmaxThread, The maximum number of http client threads, by default these are set to 10, if you are expecting to have more then 10 concurrent outbound http connections, you should consider to higher this property (numOfmaxThread) that can be found in the httpclient.properties

9.Perimeter tuning

buffer sizes can be set higher then the default, you could multiply the defaults by 4, see below:

  • socketChannel.bufferSize=128K
  • streamReader.bufferSize=16K
  • receiveStrategy.bufferSize=128K
  • conduitStreamPair.bufferSize=128K
  • socket.sendBufferSize=128K
  • socket.receiveBufferSize=128K
  • basicBufferSize=128K
  1. Asynchronous versus Synchronous

    If customer is sending data to a remote partner that has a very busy HTTP server, you should consider switching to Asynchronous MDN mode, this gives more time to the partner to return the MDN and liberates the HTTP connection that needs to stay active while in Synchronous mode.

    For inbound, Asynchronous mode is also a good idea if you are processing a lot of data in SI, this will give SI more time to send the MDN back to the remote partner without timing out the HTTP connection.

Note: All Manual properties changes should be done in customer_overrides.properties, per example:

  • http.numOfmaxThread=25
  • perimeter.socketChannel.bufferSize=128K
  • httpclient.numOfmaxThread=20

See below link to the documentation about customer_overrides.properties usage:

Overriding Properties documentation link

Have you got any additional tips for improving SI AS2 performance or any questions about the contents of this blog? If so, don't hesitate to leave a comment.

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SS3JSW","label":"IBM Sterling B2B Integrator"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

UID

ibm11122063