Tuesday, September 17, 2013

Storing transaction and compensation logs in a relational database for high availability

This is something about which I've been reading recently.

I was semi-aware that WebSphere Application Server 8.5.5 offers the option to store transaction and compensation logs in a relational database rather than as operating system files, providing high availability (HA) support without having to use a shared file system.


However, a colleague also pointed out that this functionality has been retrofitted into WAS 8.0 via Fixpack 7 ( 8.0.0.7 ), as per the Information Center here: -


Case study: Tuning WebSphere Application Server V7 and V8 for performance

This is relatively old ( 2011 ) but good: -

Summary:  IBM® WebSphere® Application Server supports an ever-growing range of applications, each with their own unique set of features, requirements, and services. Just as no two applications will use an application server in exactly the same way, no single set of tuning parameters will likely provide the best performance for any two different applications. Most applications will generally realize some performance improvement from tuning in three core areas: the JVM, thread pools, and connection pools. This article uses the Apache DayTrader Peformance Benchmark Sample application to demonstrate what you can tune and how to go about tuning it, depending on the major server components and resources that your application uses. Updated for WebSphere Application Server V8. This content is part of the IBM WebSphere Developer Technical Journal.

Monday, September 16, 2013

Monitoring business processes: How your topology influences your monitoring approach

This popped up in Twitter, from IBM developerWorks: -


Summary:  IBM® Business Process Manager and IBM Business Monitor can work in concert to provide superior visibility and process performance insight. Choosing the appropriate deployment topology is an important step in any project that involves combining these products. Different topological choices may influence the development and deployment process of the application artifacts created for IBM BPM and IBM Business Monitor. This article describes the topological options that are available, their trade-offs, and how you need to plan for development and deployment depending on the topology you adopt.

Definitely worth a read if you have an interest in, or requirement for, Business Activity Monitoring (BAM).

Exporting large applications from IBM Business Process Manager (BPM) might take over an hour

Saw this on Twitter last week: -

Problem(Abstract)

When you export a very large application or export from a very active process center, the export time might take over an hour. The export process might even fail or result in an incomplete file.

Diagnosing the problem

Check the following key points to resolve this problem:

• Verify that the user, who is exporting the application, is a local user or LDAP user.
• Examine the row count size of the LSW_PO_VERSIONS table.
• Obtain a list of indexes in the LSW_PO_VERSIONS table.
• Obtain the current size of the buffer cache and the shared pool size for the database.

Resolving the problem

There are several resolutions to this problem. You might need to address one or all of the following resolutions to decrease the time to export an application:

• If a local user export is faster, apply the fix for APAR IC91473, which is available through the following links in Fix Central:
• IBM Business Process Manager Standard
• IBM Business Process Manager Advanced

• The growth of the LSW_PO_VERSIONS table is normal and expected. When the row size reaches 2 million rows or more, the time to export an application can increase. Each save to an asset in the process designer is a new row in this table. The following indexes can assist with the speed of the export process. Add the indexes and have the database server process these indexes before running the export process again.
• CREATE INDEX IDXA_PO_VERSIONS ON lsw_po_versions 
(PO_TYPE,BRANCH_ID,START_SEQ_NUM,END_SEQ_NUM,PO_VERSION_ID) COMPUTE STATISTICS;
• CREATE INDEX IDXB_PO_VERSIONS ON lsw_po_versions
(BRANCH_ID,END_SEQ_NUM)COMPUTE STATISTICS;
• CREATE INDEX IDXC_PO_VERSIONS ON lsw_po_versions
(BRANCH_ID,START_SEQ_NUM,END_SEQ_NUM) COMPUTE STATISTICS;
• CREATE INDEX IDXD_PO_VERSIONS ON lsw_po_versions 
(BRANCH_ID,END_SEQ_NUM,PO_TYPE,PO_ID) COMPUTE STATISTICS;
• CREATE INDEX IDXE_PO_VERSIONS ON lsw_po_versions 
(PO_VERSION_ID,PO_TYPE,BRANCH_ID,START_SEQ_NUM,END_SEQ_NUM) COMPUTE 
STATISTICS; 


• The database also needs to have adequate cache space. The buffer cache should be 2 GB or more. The shared pool size should be 1 GB or greater.


This is definitely worth a look …..

Friday, September 6, 2013

Configuring cross data center BPM deployment environment to achieve faster disaster recovery

Thanks to @WAS_John for sharing this with me: -

This article describes an infrastructure topology for IBM® Business Process Manager that includes elements that reside in distinct data centers that may be geographically separated from each other. Such a topology can be useful in achieving disaster recovery objectives in certain circumstances, especially when recovery times faster those offered by traditional approaches are desired. Additionally, the strategy described in this paper uses Oracle®'s Data Base File System (DBFS) to enable the database manager to control replication of the WebSphere® transaction and compensation logs, as well as traditional IBM BPM database content. This content is part of the IBM Business Process Management Journal.

Wednesday, September 4, 2013

From the coal face - IBM BPM - Tracing Process Center to Process Server communication

A friend of mine was having fun and games with the installation of a BPD snapshot from his Process Center to a connected Process Server, via HTTPS.

The solution to the problem was to ensure that he had: -

<deploy-snapshot-using-https merge="replace">true</deploy-snapshot-using-https>

in 99Local.xml ( or, better still, the overriding 100Custom.xml ) on BOTH the Process Center and Process Server cells.

However, on the voyage of discovery, he realised that he could learn a LOT about the way that the process works by enabling JVM-level tracing.

The particular trace strings that made a difference were: -

com.ibm.bpm.fds.*=all:ProcessApplicationLifecycle=all:com.ibm.bpm.fds.repo.util.ContributionHelper=off

and: -

WLE.*=all

Nice :-)


Tuesday, September 3, 2013

IBM Update Installer for WebSphere Software - Problem updating IBM HTTP Server 6.1

One of my colleagues had some fun and games upgrading IHS yesterday, using the IBM Update Installer for WebSphere Software.

He was trying to update IHS 6.1 to the latest Fixpack 45 level.

This is what he saw in the Update Installer logs: -

(Sep 3, 2013 10:04:51 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, Selected Maintenance Package Path: /opt/IBM/WebSphere/UpdateInstaller/maintenance/Fixcentral-6.1.0-WS-IHS-LinuxX64-FP0000045.pak
(Sep 3, 2013 10:04:51 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, ********************************************************************************
(Sep 3, 2013 10:04:51 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, Information for the current install/uninstall operation.
(Sep 3, 2013 10:04:51 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, ********************************************************************************
(Sep 3, 2013 10:04:51 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, Current Operation: install
(Sep 3, 2013 10:04:51 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, Product Location: /opt/IBM/HTTPServer
(Sep 3, 2013 10:04:51 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, Product Name: null
(Sep 3, 2013 10:04:51 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, Prereq Check Messages:
(Sep 3, 2013 10:04:51 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, Maintenance Package Path: /opt/IBM/WebSphere/UpdateInstaller/maintenance/Fixcentral-6.1.0-WS-IHS-LinuxX64-FP0000045.pak
(Sep 3, 2013 10:04:52 AM), Install, com.ibm.ws.install.ni.ismp.actions.SettleNIFRegistryAction, msg1, Current install/uninstall process failed.
(Sep 3, 2013 10:04:52 AM), Install, com.ibm.ws.install.ni.ismp.actions.SetExitCodeAction, msg1, CWUPI0000I: EXITCODE=1
(Sep 3, 2013 10:04:52 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, For more information on installing components, see the following trace file:
/opt/IBM/HTTPServer/logs/update/unknown/updatetrace.log.gz
(Sep 3, 2013 10:04:52 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogFileAction, msg1, For more information on running configuration commands, see the following trace file:
/opt/IBM/HTTPServer/logs/update/unknown/updateconfig.log.gz
(Sep 3, 2013 10:04:52 AM), Install, com.ibm.ws.install.ni.ismp.actions.ISMPLogSuccessMessageAction, msg1, INSTCONFFAILED


When he looked at the more detailed log - /opt/IBM/HTTPServer/logs/update/unknown/updatetrace.log.gz - he saw more of the same: -

2013.09.03 10:04:50.568 EDT I IBM Update Installer for WebSphere Software 7.0.0.15
2013.09.03 10:04:50.614 EDT NIFRegistryPlugin.getNIFRegistryURI()
Use normal algorithm to get nifregistry path.
2013.09.03 10:04:50.614 EDT NIFRegistryPlugin.getNIFRegistryURI()
NIFRegistryPath: /opt/.ibm/.nif/.nifregistry
2013.09.03 10:04:50.615 EDT NIFRegistryPlugin.getNIFRegistryURI()
NIFRegistryURI: file:///opt/.ibm/.nif/.nifregistry
2013.09.03 10:04:50.682 EDT NIFRegistryPlugin.doesNIFRegistryFileExist()
NIFRegistry file exists under location: file:///opt/.ibm/.nif/.nifregistry
2013.09.03 10:04:50.682 EDT NIFRegistryPlugin.doesNIFRegistryFileExist()
NIFRegistry file exists under location: file:///opt/.ibm/.nif/.nifregistry
2013.09.03 10:04:51.201 EDT I Scanning metadata under the target location ......
/opt/IBM/HTTPServer
2013.09.03 10:04:51.272 EDT I Selected Maintenance Directory / Packages:/opt/IBM/WebSphere/UpdateInstaller/maintenance/Fixcentral-6.1.0-WS-IHS-LinuxX64-FP0000045.pak
2013.09.03 10:04:51.425 EDT I Fixcentral-6.1.0-WS-IHS-LinuxX64-FP0000045.pak is installed.
2013.09.03 10:04:51.426 EDT I No maintenance package is selected.
2013.09.03 10:04:51.442 EDT I ********************************************************************************
2013.09.03 10:04:51.444 EDT I Selected Maintenance Package Path: /opt/IBM/WebSphere/UpdateInstaller/maintenance/Fixcentral-6.1.0-WS-IHS-LinuxX64-FP0000045.pak
2013.09.03 10:04:51.546 EDT I ********************************************************************************
2013.09.03 10:04:51.549 EDT I Information for the current install/uninstall operation.
2013.09.03 10:04:51.550 EDT I ********************************************************************************
2013.09.03 10:04:51.551 EDT I Current Operation: install
2013.09.03 10:04:51.552 EDT I Product Location: /opt/IBM/HTTPServer
2013.09.03 10:04:51.554 EDT I Product Name: null
2013.09.03 10:04:51.556 EDT I Prereq Check Messages:
2013.09.03 10:04:51.559 EDT I Maintenance Package Path: /opt/IBM/WebSphere/UpdateInstaller/maintenance/Fixcentral-6.1.0-WS-IHS-LinuxX64-FP0000045.pak
2013.09.03 10:04:52.332 EDT I Current install/uninstall process failed.
2013.09.03 10:04:52.335 EDT SettleNIFRegistryAction.execute()
Current install/uninstall process failed.
2013.09.03 10:04:52.337 EDT I CWUPI0000I: EXITCODE=1
2013.09.03 10:04:52.346 EDT I For more information on installing components, see the following trace file:
/opt/IBM/HTTPServer/logs/update/unknown/updatetrace.log.gz
2013.09.03 10:04:52.348 EDT I For more information on running configuration commands, see the following trace file:
/opt/IBM/HTTPServer/logs/update/unknown/updateconfig.log.gz
2013.09.03 10:04:52.348 EDT I INSTCONFFAILED

again with nothing overly obvious.

Noting that he was using version 7.0.0.15 of the IBM Update Installer for WebSphere Software, I suggested that he consider updating the Update Installer itself.

This he did, downloading the most recent version - IBM Update Installer V7.0.0.29 for WebSphere Software for Linux - and tried again.

This time, it worked.

It's not obvious why it failed, but the moral of the story is …. update your Update Installer before updating your WebSphere software products :-)

PS Of course, with IHS 8 ( and all of the WAS 8 family ), updates are now handled by IBM Installation Manager, so the story is slightly different.