This blog promotes knowledge sharing through experience and collaboration. For more product information, visit our WebSphere Commerce CSE page. For easier navigation, utilize the Categories to find posts that match your interest.
Don’t forget to disable unused business events!
I have seen a couple of customers running into performance issues related to the BUSEVENT table. This usually happens when many unused events are enabled in the wc-server.xml as it writes a significant amount of data into the table. Hence I would like to write this blog to remind you to disable any business events that you are not in need of. Disabling unused events can dramatically reduce overhead on RaiseECEvent, EventProcessor, and CleanECEvent scheduler jobs.
To check what business events you have configured in your environment, open up your WebSphere Commerce Configuration file and go to this section.
<component compClassName="com.ibm.commerce.event.impl.ECEventEnableComponent" enable="true" name="Event Name">
For example, the below snippet shows that the OrderCreation event is enabled by default, which is used by IBM Digital Analytics - Sales Center integration.
For any business event that you don't need to track, you can disable the event by setting enable="false", so that there will be no record being created in the BUSEVENT database table for this event. You can refer to the Knowledge Center article, Disabling business events for more details. An example scenario, if you are not using DOM integration, you should disable "OrderSubmit", "OrderCancellation" and "PaymentAuthorizationComplete" events. Similarly, if you are not using WebSphere Commerce Payment component, you should disable "PaymentRule". You can always enable it back at a later time as needed. (see Enabling business events)
Additionally, you can also examine your BUSEVENT table to see what events are being written into it. The below sample DB2 query extracts the first 1000 event name fields from the eventdata column and sorts them based on the count.
select count(*), eventname from (select substr(r1,1,r2-1) eventname from (select r1, locate('"',r1) r2 from (select substr(eventdata,73,150) r1 from busevent where sequence=0 fetch first 1000 rows only))) group by eventname order by 1 desc
The query result is ordered by the count of each event. You can examine the top events and verify which ones can be disabled.
If you have noticed that OrderSubmit event records are being created in the BUSEVENT table even though you have disabled it in the wc-server.xml, you should check if you have this APAR JR54744 installed. This is a relatively new APAR, which is included in the JR55049 (cumulative fix 3 for fixpack 9) for V7 or 8.0.1+ for V8 . This APAR fixes the OrderSubmit event to check the enablement of the component in the wc-server.xml before raising the event.
By leveraging the techniques above, you can reduce the chance of having a performance problem in BUSEVENT table and keep your store running more smoothly.