1

Following article explains about very high performance on WSO2 CEP on the same JVM. With CEP how can I start another java application (main class) that is running on same JVM. i.e if I start a java program with JAVA command it will run on a different jvm than CEP runnign jvm.

http://wso2.com/library/blog-post/2013/08/cep-performance-processing-100k-to-millions-of-events-per-second-using-wso2-complex-event/

I am interested on achieving very high TPS rate. I am thinking that websokets and wso2events transports can give me high TPS rates from the supported transport list of CEP. So I wrote sample message generators (java programs) for both websockets and wso2events but I couldn't achieve the TPS rates mentioned in above reference. So same JVM might be the issue here.

Community
  • 1
  • 1
lsc
  • 681
  • 3
  • 8
  • 26

1 Answers1

1

Above article is written for old CEP release, nFrom CEP 4.0.0 on wards can be tuned to achieve higher TPS. We recommend you to use wso2event and you need to configure thrift protocol data agent and data bridge.

If you are using a thrift data agent publisher to publish events to CEP, increase the size of QueueSize in data-agent-config.xml file. You can use sample performance producer client to publish events [1]. The data-agent-config.xml file of that sample producer is located in the resources directory [2].

Depending on the processing and siddhi queries of your CEP, you may have to increase the eventBufferCapacity in data-bridge-config.xml which resides in /repository/conf/data-bridge/ directory. If you are publishing events from the CEP, use wso2event publisher and increase the QueueSize of /repository/conf/data-bridge/.

Please refer Performance Tuning Recommendations [3] for more details. On the hand tuning CEP instance with very high TPS will result in high latency as well.

[1] https://github.com/wso2/product-cep/tree/master/modules/samples/producers/wso2-event-performance

[2] https://github.com/wso2/product-cep/tree/master/modules/samples/producers/wso2-event-performance/src/main/resources

[3] https://docs.wso2.com/display/CEP400/Performance+Tuning+Recommendations

Tharik Kanaka
  • 2,490
  • 6
  • 31
  • 54
  • So is this means same JVM is not a factor anymore for new CEP releases? – lsc May 06 '16 at 04:29
  • Also, that article is on performance of the Siddhi engine embedded in the application (event source) itself so they both run in same jvm, whereas in your question you've tried the standalone CEP product with an event producer in a different jvm. And in new releases there are many performance optimizations done for the event adaptors but still the performance largely depends on the transport used (siddhi engine can perform much faster as the article suggests but it's kind of under-utilized due to limited performance of the transports) – Rajeev Sampath May 06 '16 at 05:02
  • @RajeevSampath In my implementation both wso2 event generation java program and CEP is on same machine. So I wonder if I can run both on same JVM instance then I may be able to get more performance than this. But I don't know how to start a java program (event generator) from the same JVM that CEP running. May be carbon app help here. – lsc May 06 '16 at 06:02
  • 1
    @Isc If you are using CEP Server even if you same JVM there will not be significant performance increment as events will be published using thrift protocol through wso2 event receivers. As i have mentioned by tuning data agent and bridge you can achive over 100k. Other option is you can embed Siddhi as a library in your code as Rajeev as specified which will bypass thrift transport protocol. – Tharik Kanaka May 06 '16 at 06:40