How application module helps for performance improve
Hi Everyone,
I have a sample web-application in which I am connecting with single AM instance (AM for database view object), retrieving some information and then close the connection. I am doing this as,
// making AM instance
<application module instance> = Configuration.createRootApplicationModule(<AM name>, config);
// performing operations
<operation result> = <application module instance>.<access VO with any operation>();
System.out.println("Get result here");
// disconnecting AM instance
<application module instance>.getDBTransaction().disconnect();
Configuration.releaseRootApplicationModule(<application module instance>, true);
These are the activities which are performed by a single user. Now, I am doing stress test on same activities. I am testing the same code with 300 concurrent users (using JMeter with JSP URL). These are working fine. Also I checked multiple times, it always working fine.
Now, I need to do something through which I can improve the performance. I know, I can use AM pool configurations to make this more effective. I have gone through the Oracle documents and checked the same test case with default or recommended pool configurations and I found similar kind of results (there is not much difference).
On other hand, I tried with 'releaseRootApplicationModule' method with false parameter and found better results in default as well as recommended pool configurations.
My question is, is the change of pool configurations recommended by Oracle really work? or do I need to concentrate more on coding part with default pool configurations?
Here, I would like to know, what are the best practice (in code as well as pool configurations), I need to follow if I really want to improve the performance in real scenarios (when our application will access with large no. of concurrent users).
I really look forward some help from experts. I have given a lot of time on this to know how really we can make our application more effective in terms of performance.
I really appreciate for your reply.
Regards,
Dilip Gupta.
>
We added the createRootApplicationModule() API (in the oracle.jbo.client.Configuration class) to simplify acquiring an application module from the pool for brief programmatic manipulation before it is released back to the AM pool.
Steve Muench.
>
check [url http://radio-weblogs.com/0118231/2009/08/20.html#a959]Check Your App for Misuse of Configuration.createRootApplicationModule()
Edited by: Mohammad Jabr on May 10, 2012 7:14 AM
Similar Messages
-
Pls help me to modify the query for performance improvement
Hi,
I have the below initialization
DECLARE @Active bit =1 ;
Declare @id int
SELECT @Active=CASE WHEN id=@id and [Rank] ='Good' then 0 else 1 END FROM dbo.Students
I have to change this query in such a way that the conditions id=@id and [Rank] ='Good' should go to the where condition of the query. In that case, how can i use Case statement to retrieve 1 or 0? Can you please help me to modify this initialization?I dont understand your query...May be below? or provide us sample data and your output...
SELECT * FROM dbo.students
where @Active=CASE
WHEN id=@id and rank ='Good' then 0 else 1 END
But, I doubt you will have performance improvement here?
Do you have index on id?
If you are looking for getting the data for @ID with rank ='Good' then use the below:Make sure, you have index on id,rank combination.
SELECT * FROM dbo.students
where id=@id
and rank ='Good' -
How to create help for java application
Thanks very much for any suggestions how to create help file for java application
how to set up the environment variable JAVAHELP_HOME
-
How to display Help for the message in our program
Hi Experts,
Do any one know how to display the HELP for the Message in our ABAP program? Just like the user click the Long Text button in SE91.Do we have any function modules or Class method to do that? Thanks in advance.
JoeHi Joe,
While creating a message class in se93, theres a button (documentation) on the application tool bar. Click on that and you will be lead to a text editor where you can fill in the necessary documentation for the message you have created. -
BC4J Application Module Pooling for JClient App
Helo,
i wonder why all documentation about bc4j application module pooling available is for Web app ? (jsp) . I'm creating swing JClient app and i need some doc about how the application module pooling works in this kind of application.
anybody know where can i get those docs ?
Need help and Thank you,
Ricky H.P.Connection pooling can be achieved when a JVM instance manages the pool, in 3tiers the Java App. Server has that task.
If you are 2tiers that means that you are communicating with the database through JDBC.
When a user launches your JClient app in fact he lauches his own JVM instance so I don't how he could share a pool with other users.
In your case you have at most 2 open transactions per user.
You can achieve that by sharing a same binding context with n forms composed of m panels.
Let's say:
1 main form
connection 1: forms a,b,c
connection 2: forms x,y,z
In your main form your open your 2 connections and share them.
You can achieve that by:
1) in our main form, initialize 2 binding containers
Example of one:
DCBindingContainer bc1 = this.createBindingContainer("package name","model name");
private DCBindingContainer createBindingContainer(String packageName, String panelModelName)
StringBuffer sb = new StringBuffer(packageName);
sb.append(ViewConstants.STRING_DOT);
sb.append(panelModelName);
DCBindingContainerDef bcdef = DCBindingContainerDef.findDefObject(sb.toString()); //NOTE THE NAME.
if (bcdef == null)
throw new JboException("System error, "+getClass().getName()+".createBindingContainer, DCBindingContainerDef: "+sb.toString()+" not found");
DCBindingContainer bc = bcdef.createBindingContainer(panelBinding.getBindingContext());
bc.setName(panelModelName);
panelBinding.getBindingContext().put(panelModelName, bc);
return bc;
2) Before that the jbInit method gets called in the called form, set the binding context:
form1 = new Form1(...);
form1.setBindingContainer(bc1) ;
Example of methods in form 1 and form 2:
public void setBindingContainer(DCBindingContainer ctr)
this.panelBinding = (JUPanelBinding)ctr;
setBindingContext(ctr.getBindingContext());
public void setBindingContext(BindingContext bindCtx)
if (panelBinding.getPanel() == null)
panelBinding = panelBinding.setup(bindCtx, this);
registerProjectGlobalVariables(bindCtx);
panelBinding.refreshControl();
try
System.out.println("Form setBindingContext calling jbInit");
jbInit();
panelBinding.refreshControl();
// FL added
isBindingContextSet = true;
System.out.println("Form isBindingContextSet true");
catch(Exception ex)
System.out.println("Form setBindingContext exception caught");
panelBinding.reportException(ex);
Regards
Fred -
Hi Gurus,
I m new to the group and SAP BW as well,so i need ur valuable inputs for a Performance related Project.
I m going to start a new project in a wks time so and i m working as a Performance Tuning Consultant on that(Load & Query Performance),but i don't have any idea about this,so i need ur valuable advice on that,plz.
Can anyone plz suggest me the possible ways of suggestions so that i can tell the client as a gud consultant to start with but these days i m going though BW Performance & Authorization(BW360) which is really helpful for me but apart from that i need ur valuable inputs as well.
Thanks in Advance.
regards
Amithi Amit,
check this.
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/afbad390-0201-0010-daa4-9ef0168d41b6
also
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/media/uuid/10b589ad-0701-0010-0299-e5c282b7aaad
regards. -
Application module creation for (web) services
Hello,
We are running into stack overflows from ADF BC (BC4J) with oracle.jbo.client.Configuration.createRootApplicationModule. We want to make sure we're doing this right.
If you have data bound services (e.g. product lookup) and you don't want to put your operation/exposed method in the application module Impl class for clear seperation (unlike ADF toy store sample), is it appropriate to:
1. Create a Java service class that you will expose as J2EE web service
2. The method to be exposed will call Configuration.createRootApplicationModule to checkout an app module from pool.
3. Find the view object, run the query, get the row.
4. Configuration.releaseRootApplicationModule to check it back in.
Please share your best practices and recommended approach with us.
Thanks,
- ZakI'd recommend using our built-in feature for exposing an application module class as a J2EE web service. This will code-generate a class for you that does the AM access correctly.
-
Lazy mode setting in Application Module AM for 10g
Hi,
I am using Jdev 10.1.3.x
There is very little information given on Lazy mode setting in AM.
I tred to enable that and written System.out.println() in getter and setter in Impl class.
Even though i enabled Lazy mode application on load of page executes this sop(s) which means iterator gets executed on load of page.
I want to prevent execution of iterator on load of page to boost the page load time. i have VO draged dropped on the page but they are rendered on click of search button. So execution of Iterator impacts the performance.
Any suggeston will be appriciable.
Thanks & Regards,
Kevin ChhedaHi Shay Shmeltzer,
Thanks for the reply.
Yes you are correct that through post back we can display the result after user has interacted with page. But when i entered some System.out.println()s in the getter and setter of Impl they were executed on load, which implies that post back just controlls when to display data. And when we set the EL rendered="#{adfFacesContext.postback == true}", On load of page iterator is executed and only data is not displayed, which causes one query on load of page which is not desired.
My ultimate aim is to boost up the onload time and not to query databse when not reqired to prevent Database hit. Through this technique i think we can boost up time by not rendering data on page but cannot prevent free hit to Database.
Revert in case my assumption need to be refined, and also i would like to know what exactly happens when we enable Lazzy mode option in impl tuning. And how do i assure that it is not querying Database.
Thanks & Regards,
Kevin Chheda -
Need help for performance tunning
Hello,
I have 16K records return by query, it takes long time to proceed for 7K it takes 7.5 sec.
Note: I used all seeded tables only.
If possible please help me to tune it.
SELECT msi.inventory_item_id,msi.segment1,msi.rimary_uom_code , msi.primary_unit_of_measure
FROM mtl_system_items_b msi, qp_list_lines qpll,qp_pricing_attributes qppr,
mtl_category_sets_tl mcs,mtl_category_sets_b mcsb,
mtl_categories_b mc, mtl_item_categories mcb
WHERE msi.enabled_flag = 'Y'
AND qpll.list_line_id = qppr.list_line_id
AND qppr.product_attr_value = TO_CHAR (msi.inventory_item_id(+))
AND qppr.product_uom_code = msi.primary_uom_code
AND mc.category_id = mcb.category_id
AND msi.inventory_item_id = mcb.inventory_item_id
AND msi.organization_id = mcb.organization_id
AND TRUNC (SYSDATE) BETWEEN NVL (qpll.start_date_active,TRUNC (SYSDATE)) AND NVL (qpll.end_date_active,TRUNC (SYSDATE))
AND mcs.category_set_name = 'LSS SALES CATEGORY'
AND mcs.language = 'US'
AND mcs.category_set_id = mcsb.category_set_id
AND mcsb.structure_id = mc.structure_id
AND msi.organization_id = :p_organization_id
AND qpll.list_header_id = :p_price_list_id
AND mcb.category_id = :p_category_id;
Thanks and regards
Akil.Thanks Helios ,
here is answers
Databse version
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit
PL/SQL Release 11.1.0.7.0
explain plan
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
|
0 | SELECT STATEMENT
| |
1 | 149 | 9439
(1)|
|
1 | NESTED LOOPS | | 1 |
149 | 9439 (1)|
|*
2 | HASH JOIN OUTER | | 1 |
135 | 9437 (1)|
|*
3 | HASH JOIN | | 1 |
71 | 9432 (1)|
|
4 | NESTED LOOPS | | 2 |
76 | 53 (0)|
|*
5 | TABLE ACCESS BY INDEX
ROWID| QP_LIST_LINES | 2 |
44 | 49 (0)|
|*
6 | INDEX SKIP SCAN | QP_LIST_LINES_N2 |
702 | | 20
(0)|
|*
7 | INDEX RANGE SCAN | QP_PRICING_ATTRIBUTES_N3 | 1 |
16 | 2 (0)|
|*
8 | TABLE ACCESS BY INDEX
ROWID | MTL_SYSTEM_ITEMS_B | 46254
| 1490K|
9378 (1)|
|*
9 | INDEX RANGE SCAN | MTL_SYSTEM_ITEMS_B_N9 | 46254 | |
174 (1)|
|
10 | TABLE ACCESS FULL | XX_WEB_ITEM_IMAGE_TBL |
277 | 17728 | 5 (0)|
|* 11 | INDEX RANGE SCAN | MTL_ITEM_CATEGORIES_U1 |
1 | 14 | 2
(0)|
Predicate Information (identified
by operation id):
2 -
access("XWIIT"."IMAGE_CODE"(+)="MSI"."SEGMENT1")
3 -
access("QPPR"."PRODUCT_ATTR_VALUE"=TO_CHAR("MSI"."INVENTORY_ITEM_ID")
AND
"QPPR"."PRODUCT_UOM_CODE"="MSI"."PRIMARY_UOM_CODE")
5 - filter(NVL("QPLL"."START_DATE_ACTIVE",TRUNC(SYSDATE@!))<=TRUNC(SYSDATE@!)
AND
NVL("QPLL"."END_DATE_ACTIVE",TRUNC(SYSDATE@!))>=TRUNC(SYSDATE@!))
6 -
access("QPLL"."LIST_HEADER_ID"=TO_NUMBER(:P_PRICE_LIST_ID))
filter("QPLL"."LIST_HEADER_ID"=TO_NUMBER(:P_PRICE_LIST_ID))
7 -
access("QPLL"."LIST_LINE_ID"="QPPR"."LIST_LINE_ID")
filter("QPPR"."PRODUCT_UOM_CODE" IS NOT NULL)
8 - filter("MSI"."ENABLED_FLAG"='Y')
9 - access("MSI"."ORGANIZATION_ID"=TO_NUMBER(:P_ORGANIZATION_ID))
11 -
access("MCB"."ORGANIZATION_ID"=TO_NUMBER(:P_ORGANIZATION_ID)
AND
"MSI"."INVENTORY_ITEM_ID"="MCB"."INVENTORY_ITEM_ID"
AND
"MCB"."CATEGORY_ID"=TO_NUMBER(:P_CATEGORY_ID))
filter("MCB"."CATEGORY_ID"=TO_NUMBER(:P_CATEGORY_ID))
Note
- 'PLAN_TABLE' is old version
TKprof Plan
TKPROF: Release 11.1.0.7.0 - Production on Fri Nov 15 06:12:26 2013
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Trace file: LSSD_ora_19760.trc
Sort options: default
count = number of times OCI procedure was executed
cpu = cpu time in seconds executing
elapsed = elapsed time in seconds executing
disk = number of physical reads of buffers from disk
query = number of buffers gotten for consistent read
current = number of buffers gotten in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
SELECT msi.inventory_item_id,
msi.segment1,
primary_uom_code,
primary_unit_of_measure,
xwiit.image_url
FROM mtl_system_items_b msi,
qp_list_lines qpll,
qp_pricing_attributes qppr,
mtl_item_categories mcb,
xx_web_item_image_tbl xwiit
WHERE msi.enabled_flag = 'Y'
AND qpll.list_line_id = qppr.list_line_id
AND qppr.product_attr_value = TO_CHAR (msi.inventory_item_id)
AND qppr.product_uom_code = msi.primary_uom_code
AND msi.inventory_item_id = mcb.inventory_item_id
AND msi.organization_id = mcb.organization_id
AND TRUNC (SYSDATE) BETWEEN NVL (qpll.start_date_active,
TRUNC (SYSDATE))
AND NVL (qpll.end_date_active,
TRUNC (SYSDATE))
AND xwiit.image_code(+) = msi.segment1
AND msi.organization_id = :p_organization_id
AND qpll.list_header_id = :p_price_list_id
AND mcb.category_id = :p_category_id
call count cpu elapsed disk query current rows
Parse 2 0.00 0.00 0 0 0 0
Execute 2 0.00 0.00 0 0 0 0
Fetch 2 3.84 3.85 0 432560 0 1002
total 6 3.84 3.85 0 432560 0 1002
Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 173
Rows Row Source Operation
501 NESTED LOOPS (cr=216280 pr=0 pw=0 time=115 us cost=9439 size=149 card=1)
2616 HASH JOIN OUTER (cr=211012 pr=0 pw=0 time=39 us cost=9437 size=135 card=1)
78568 HASH JOIN (cr=210997 pr=0 pw=0 time=3786 us cost=9432 size=71 card=1)
78571 NESTED LOOPS (cr=29229 pr=0 pw=0 time=35533 us cost=53 size=76 card=2)
78571 TABLE ACCESS BY INDEX ROWID QP_LIST_LINES (cr=9943 pr=0 pw=0 time=27533 us cost=49 size=44 card=2)
226733 INDEX SKIP SCAN QP_LIST_LINES_N2 (cr=865 pr=0 pw=0 time=4122 us cost=20 size=0 card=702)(object id 99730)
78571 INDEX RANGE SCAN QP_PRICING_ATTRIBUTES_N3 (cr=19286 pr=0 pw=0 time=0 us cost=2 size=16 card=1)(object id 99733)
128857 TABLE ACCESS BY INDEX ROWID MTL_SYSTEM_ITEMS_B (cr=181768 pr=0 pw=0 time=9580 us cost=9378 size=1526382 card=46254)
128857 INDEX RANGE SCAN MTL_SYSTEM_ITEMS_B_N9 (cr=450 pr=0 pw=0 time=1657 us cost=174 size=0 card=46254)(object id 199728)
277 TABLE ACCESS FULL XX_WEB_ITEM_IMAGE_TBL (cr=15 pr=0 pw=0 time=22 us cost=5 size=17728 card=277)
501 INDEX RANGE SCAN MTL_ITEM_CATEGORIES_U1 (cr=5268 pr=0 pw=0 time=0 us cost=2 size=14 card=1)(object id 99557)
Note: I modified query and it gives good result, now it takes 3 to 4 sec for 16000 records.
If possible can you plz explain what we have to take care while doing performance tunning
I am a fresher so don't have that much idea.
and also Thanks Hussein for your replay -
Asking help for performance issues about concurrent package
One of my friends is developing a service based on resin. They use thread pool of current package in jdk1.5. The service will create a lot of threads in the thread pool. And most of the threads are waiting. What they can not make sure is how the large amount of waiting threads will affect the performance. These threads surely will occupy a lot of memory. But how will they affect the cpu?
Some documents on the Internet say that the large amount of waiting threads will largely increase the thread switching overhead. And some others say no because the scheduler will not be affected by waiting threads. I'm not sure which one is true. Would anyone like to give me some tips? It's better if you can point out any our documents about it.
Thanks!No, it just depends on Data Structures 101.
You would have a list of ready threads, from which you would allocate one to the processor on some priority and fairness scheme, and another list of non-ready threads which you would only promote to the ready list when something happened to them that made them ready.
And among the ready threads you would most likely use a priority queue, so that operations on it were O(log(N)). And if the ready list also included the unready list for some strange reason, operations on it would still be O(log(N)), i.e. less than linear in the total number of threads.
And if for some strange reason it was implemented in a less efficient way than that, I would complain vociferously to the vendor. Scheduling has been going on for fifty years after all. -
How Display Standard Help for a Message?
I have a program that executes a Call Transaction. When it returns an error message, I write the message to a report.
I would like to define a hotspot on the report so that the user can click on the message and get the standard long text for the message. This would be equivalent to the result you get when you click on a message at the bottom of a screen.
Is there a standard function module that would provide this feature?Check This FM DOCU_CALL
Regards,
Naimesh Patel -
Caching XQuery Result in OSB for Performance Improvement
Hi,
I have written a custom XPath function in Java to pick the IP address of the machine and registered the same with Oracle Service Bus 11g.
In the Proxy Message Flow, the server IP is picked at run time by using XQuery that refers to the Custom Function.
Now, is there a way to cache this result some where in OSB so that in the subsequent execution, the XQuery will pick the cached value from Cache instead of making a call to Custom Function registered with OSB.
I'm asking this question to understand if performance optimization is possible here by caching the result.
Thanks,
CCHi All,
Have implemented Java Callout and Custom XPath in the same flow and kept current datetime stamp before and after each of these steps to calculate the difference b/w timestamps thereby finding the execution times of Java Callout and Custom XPath steps (this may not be an elegant way of calculating the execution time of each step in OSB message flow, request someone to suggest the most recommended approach here!) ...
For a load of 10 users, each submitting 10 requests (total 100 requests), following are the execution times (in milliseconds) collected for 10 requests (Server is not occupied with any other activity at this time):
Java Callout(milliseconds) | Custom XPath(milliseconds)
13 | 1
4 | 0
5 | 1
1 | 2
0 | 1
1 | 0
1 | 0
1 | 0
1 | 0
1 | 2
Where the value of '0' is appearing, I assume it could be some micro seconds. The difference happens to be zero in some cases as we don't have microsecond level logging.
Thanks,
CC
Edited by: Chandu on 19-Jul-2011 22:02 -
Resource Module Help for localization
hi,
I have an existing app that I need to localize, I want to use
resource bundles as there are quite a few languages we need to
support.
I following along on flex3 cookbook page 640 and
http://livedocs.adobe.com/flex/3/html/help.html?content=l10n_5.html#158277
I need to get a list of resources mxmlc -locale=
-resource-bundle-list=myresources.txt MyApp.mxml
When I run tis I get this error:
Error: Access of undefined property JSON
I'm using JSON and its working fine.
Thanks in advanceok fixed the issue, this was a flex 2 project brought into
flex 3
The the project was still point to corelib.swc for JSON in
flex 2, I copied the corelib to the libs folder of the flex 3 app
and all is good. -
How to find help for Apple Mail password problem -- using CLEAR/Verizon
I've established an alias e-mail address through Apple Mail. I've lost the password. Apple "Help" tells me to ask internet provider. But I only have a cell phone so Verizon doesn't allow me to ask my question. I use CLEAR to connect through Verizon.
This is confusing. I don't know where to go with this issue.What is the domain for the email address? You need to get help from the email provider.
If a forum member gives an answer you like, give them the Kudos they deserve. If a member gives you the answer to your question, mark the answer as Accepted Solution so others can see the solution to the problem.
"All knowledge is worth having." -
Index creation on a field in DSO for performance improvement of a select st
Hi All,
We have one DSO in Production which has around 48 million records.
In a transformation of a cube, we have a select statement on the DSO with comparing 5 fields. And 4 of them are data fields in the DSO.before some time we change a structure of the DSO. We moved one info object from key field to data field which is being used in the select query.
After this change, we do a full load to the DSO and then everything is running fine. Except the load to cube is getting stuck at the select statement. It is running for ever.
Now I have the below doubts,
1. Can this happen as one of the field which we are using in the select statement does not have indexes?
2. If we want to create index on that field, then what would be the required steps?
Thank you,
JaiminHi Jaimin,
Sorry ,i misunderstood the question.Request you to please explain the issue step by step once again.
Rgds
SVU123
Edited by: svu123 on Feb 25, 2011 11:52 AM
Edited by: svu123 on Feb 25, 2011 1:30 PM
Maybe you are looking for
-
Hi all, I have this error when I execute my application: com.sap.tc.webdynpro.progmodel.context.ContextException: NodeInfo(GetCostsView): cannot modify Userid because it is mapped and there is no active NodeElement to take the value I have a Custom c
-
UIImageView not fading out as it should in the simulator?
i am using an animation block to fade out a view. fading in works perfectly, however fading it out does not. it waits for the animationduration, then just disappears. I hope that it is because of the simulator being too slow, but i might have just ma
-
Hello. I get hissing between some songs on playback how do i stop this please ?
-
My itunes opens but stops responding two seconds later....Help?
Recently i got given an ipod and my itunes had been working fine previously. So i loaded my ipod and my two siblings ipods onto the computer and we were downloading music and it was working fine. Later i came back and tried to open itunes and the win
-
hi all, I am new to this topic,so could any one please help me on this problem. How to Connect MySQL database with java , I am getting errors with Driver and data source. which ODBC data source (user DSN,system DSN or file DSN ....) So please help me