This chapter describes techniques for improving Oracle Complex Event Processing (Oracle CEP) application performance by using partitioning and batching, and includes information specific to high availability performance tuning.
When creating your EPN, consider the following performance tuning options:
For more information, see Chapter 22, "Understanding Scalability".
You can improve scalability by configuring an event partitioner channel. When you configure a channel to use an event partitioner, each time an incoming event arrives, the channel selects a listener and dispatches the event to that listener instead of broadcasting each event to every listener for partitioning events on a channel across its output event sinks.
For more information, see Section 22.2.1, "EventPartitioner".
By default, a channel processes events as they arrive. Alternatively, you can configure a channel to batch events together that have the same timestamp by setting the
For more information, see Section 9.1.6, "Batch Processing Channels".
com.oracle.cep.cluster.hagroups.ActiveActiveGroupBean, you can partition an incoming JMS stream in Oracle CEP applications by utilizing the notification groups that the
For more information, see Section 22.2.2, "ActiveActiveGroupBean".
When creating high-availability applications for deployment to multi-server domains, consider the following performance tuning options:
For more information, see Section 20.3, "Designing an Oracle CEP Application for High Availability"
If you only want availability and are not concerned with recovery time, then it is possible to use smaller, less equipped hosts as secondaries. However, to maximize high availability performance, ensure that all hosts in the multi-server domain are identical: same number and type of processor, same quantity of memory, same number and size of disks.
The Oracle CEP high availability input adapter is applicable to all high availability quality of service options. However, because the high availability input adapter increases performance overhead, it is not appropriate for some high availability quality of service options (such as Section 20.2.1, "Simple Failover" and Section 20.2.2, "Simple Failover with Buffering").
If you are using application time from the event then you do not need to use the input adapter. Application time from the event is always preferable from a performance standpoint.
Consider increasing the
batch-size to reduce the amount of time the primary server spends broadcasting event messages and to reduce the amount of time the secondary servers spend processing these messages.
batch-size may increase the likelihood of missed and duplicate events if the primary fails before broadcasting an event message with a large number of events.
For more information, see Table 21-3, "Child Elements of ha-inbound-adapter for the High Availability Input Adapter".
Consider decreasing the
trimming-interval to reduce the amount of time the primary server spends broadcasting trimming messages and to reduce the amount of time the secondary servers spend processing these messages.
trimming-interval may increase recovery time as the new primary server's in-memory queue will be more out of date relative to the old primary.
For more information, see Table 21-9, "Child Elements of ha-broadcast-adapter for the Broadcast Output Adapter".
For more information, see "Performance Tuning" in the Oracle Coherence Developer's Guide at
To reduce failover time, increase Coherence heartbeat timeout machine frequency and reduce the number of heartbeats before failure.
To improve messaging performance, implement the Oracle Coherence Portable Object Format (POF) for serialization. POF is a language agnostic binary format that was designed to be very efficient in both space and time. Using POF instead of Java serialization can greatly improve performance.
For more information, see