This discussion is archived
7 Replies Latest reply: Oct 22, 2013 3:45 PM by frank.hampshire RSS

OPA Performance Issue

ParthibHW Newbie
Currently Being Moderated

Hello OPA Experts,

 

I have built OPA rules and Siebel IO mapping for Line item calculation. OPA calculates the discount and upsert the discount to Siebel. during testing for 1000 line items it took 2 minutes to execute the OTB workflow 'Policy Automation Assess IO' , I have added steps for data mapper and upsert. Here are the findings:

 

1. Step 'Load IO' took 7 seconds

2. 'Call Access IO' took 1 minutes 2 seconds

 

I am using Tomcat server in my local for testing. Why it takes so long to get response from OPA?. How can I improve the performance, I can use IO searchSpec to send only line items satisfy for calculation. But user want to process all 1000 line items on click of a button. Please let me know if we can improve the performance or it is OOTB behavior. Thanks.,

  • 1. Re: OPA Performance Issue
    frank.hampshire Expert
    Currently Being Moderated

    What version of OPA Siebel Connector are you using? There were some significant preformance improvements between 10.4.2 and 10.4.4.

     

    Some things to look at:

     

    If you are doing lots of inferred relationships or inferred entities that can be fairly slow. For example if each Line item has a possible inferred relationship between the 1000 other line items that will mean 1000 x 1000 evaluations for membership.

     

    Also, if you are returning Decision Reports, they can be vary big, especially if there is one per line item.

     

    Cheers

    Frank

  • 2. Re: OPA Performance Issue
    ParthibHW Newbie
    Currently Being Moderated

    Hi Frank, Great. I have deployed 10.4.4 to OC4J server. it considerably improved performance, to Process 1500 part items and update 2 fields in siebel for each part item, whole e2e process took 14 seconds. No inferred entity relationship, each part item iterated to calcluated fields based on the same entity instance. Is there any pointers to improve performance further?. how to scale servers in production, will it help if we use clustering and load balancer?. Please update. Thanks.

  • 3. Re: OPA Performance Issue
    frank.hampshire Expert
    Currently Being Moderated

    Glad to hear you got an improvement from 10.4.4. Clustering is relatively easy if you are using the determinations-server assess service. Because each request is stateless, you can set up a cluster of determinations servers and share load between them without worrying about sessions shared between them, so, clustering determinations servers is purely a matter of load balancing. Typically clustering will help if you performance is starting to drop off because there are too many requests coming to the one server. You should probably think about clustering if there are indications that requests are getting slower because they are jammed up.

     

    There are a few things you can do with the Java VM to improve performance. It can be very specific to the application server you are running on but, usually increasing the memory (-Xms and -Xmx settings) is an easy way of improving performance.

     

    One of the large components of the time spent will be the transfering of XML via http between determinations server and Siebel, unfortunately this is much more difficult to improve performance. Ensuring there is low latency between the determinations server and Siebel is your best bet here.

     

    Finally, with the Assess IO operation, determinations server does a call back to Siebel the first time to get the Integration Object definition, so the first request is always slower than any subsequent requests.

     

    Hope this helps

     

    Cheers

    Frank

  • 4. Re: OPA Performance Issue
    ParthibHW Newbie
    Currently Being Moderated

    Great. I supposed to ask you why first request always take time, your reply is perfect. BTW, Can i use batch processor for the above calculations?. thanks,

  • 5. Re: OPA Performance Issue
    frank.hampshire Expert
    Currently Being Moderated

    The Batch Processor works on database tables directly and the mapping is done between the tables and OPA data model via a mapping xml. This is fairly different from a Siebel Connector mapping.

     

    You could definitely use the batch processor to modify the data directly in the tables and it would almost certainly be faster. However, you would  have to think about the implications of modifying the data without the knowledge of Siebel.

  • 6. Re: OPA Performance Issue
    ParthibHW Newbie
    Currently Being Moderated

    Hi Frank, We were using OPA Connector for Siebel to get the response  and upsert Siebel. Now the requirement changed. We have custom Portal which will be used to create order header, line items and click button 'Calculate Discount', it should send message(similar to Siebel IO message) to OPA and get response from OPA and show the updated fields(opa outcome(s)) in Portal.Once user verfies then click 'Save' button and it should upsert into Siebel. How to configure it?. We do not want portal calling Siebel OPA web service, is it possible for portal to call OPA directly?. any other pointers to note. Thanks a lot.

  • 7. Re: OPA Performance Issue
    frank.hampshire Expert
    Currently Being Moderated

    Hi ParthinHW,

     

    You can definitely think about calling the Determinations Engine directly. There's an API which is documented in the Oracle_Policy_Automation_Help_<version>.zip avaliable from Edelivery. If you're not using Web Determinations in the Portal, you will have to use whatever hooks are availalble in the framework for invoking java.

     

    Cheers

    Frank

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points