|Re: Performance Issue [message #531178 is a reply to message #531079]
||Tue, 04 May 2010 06:17
| No real name
Registered: May 2010
I don't have a solution, but apparently the same 'problem'. For us, the heap is running low, too, but we have over 3 million of these objects (exact counter for both servers after running a load test with over 50 users here: 3,252,219 and 3,673,138).
Our environment (quite the same) - clustered x2:
server : OC4J 10g
Technology used: EJB3, EclipseLink, icefaces
os: suse enterprise Linux
Nearly 300 MB reports dynaTrace as being used by this single object which is from my perspective a little bit too much.
I'm not saying basically that there is a bug or something like that, it could be that the application code is using eclipselink in a not so optimal way which results in this.
The size of the project here is around 1000 tables with a not so easy to count named queries (I'm guessing 500).
Any advice on what I can analyze would be really helpful!
[Updated on: Tue, 04 May 2010 06:22]
Report message to a moderator
|Re: Performance Issue [message #534940 is a reply to message #530956]
||Thu, 20 May 2010 17:57
| James Sutherland
Registered: July 2009
Location: Ottawa, Canada
What do you mean by Batch.Join? Are you using batch reading, the BATCH query hint? Please include the code for your query.|
Assuming you are using batch reading, and using LAZY, and caching, and have a very large cache size (what is your cache size?). The issue code be that the BatchValueHolder will hold the batch query which is defined from copying the original query and anding it with the mapping's query. This is a copy of the Expressions, but will only be one per query. However if you did a lot of these queries, you could get a lot of these expressions cached. Say if each query has 10 expressions, and you executed 100,000 independent queries and cached these 100,000 objects, and never instantiated their LAZY relationships, then you could get 1,000,000 expressions.
Please include the instance counts for the classes I listed in my previous reply, as well as your entities.
If you only use batch reading when you intend to instantiate the relationships, this may avoid the issue.
You also seem to be holding onto a lot of your objects, maybe decrease your cache size, or investigate how many of your own objects are in memory and what is holding onto them.
Also try the EclipseLink 2.1 release. Batch reading has been improved to prepare the batch queries, so this should reduce the number of expressions to 1 per named query, instead of 1 per executed query.
James : Wiki : Book : Blog : Twitter
Powered by FUDForum
. Page generated in 0.02386 seconds